57'Land

ssh 无法连接

查看auth.log以及auth.log.1,发现蹊跷的地方大概是pam_unix(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty2 ruser= rhost= user=jr

用来检查sshd的config文件是否有错误/usr/sbin/sshd -T

可能跟密码相关 曾经重置过公私钥

在主机端,/usr/sbin/sshd -dddd -D

结果得到

debug2: load_server_config: filename /etc/ssh/sshd_config
debug2: load_server_config: done config len = 276
debug2: parse_server_config: config /etc/ssh/sshd_config len 276
debug3: /etc/ssh/sshd_config:56 setting PasswordAuthentication yes
debug3: /etc/ssh/sshd_config:63 setting ChallengeResponseAuthentication no
debug3: /etc/ssh/sshd_config:91 setting X11Forwarding yes
debug3: /etc/ssh/sshd_config:95 setting PrintMotd no
debug3: /etc/ssh/sshd_config:114 setting AcceptEnv LANG LC_*
debug3: /etc/ssh/sshd_config:117 setting Subsystem sftp	/usr/lib/openssh/sftp-server
debug1: sshd version OpenSSH_7.6, OpenSSL 1.0.2n  7 Dec 2017
debug1: private host key #0: ssh-rsa SHA256:rzmlFxxr56FVOtovqQSlbGNU/YQrDSZCLw4EPUkiRTs
debug1: private host key #1: ecdsa-sha2-nistp256 SHA256:D7epphcGuNjRbHzHl0L53mWw5yUCQLdO4guA0tRIrXU
debug1: private host key #2: ssh-ed25519 SHA256:yRCqnEmmCSJOzpjpocpGqIs1sk7dfOHaiP9xjLBPJ3U
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-dddd'
debug1: rexec_argv[2]='-D'
debug3: oom_adjust_setup
debug1: Set /proc/self/oom_score_adj from 0 to -1000
debug2: fd 3 setting O_NONBLOCK
debug1: Bind to port 22 on 0.0.0.0.
Bind to port 22 on 0.0.0.0 failed: Address already in use.
debug2: fd 3 setting O_NONBLOCK
debug3: sock_set_v6only: set socket 3 IPV6_V6ONLY
debug1: Bind to port 22 on ::.
Bind to port 22 on :: failed: Address already in use.
Cannot bind any address.


参考

final solution 于是手动创建了/var/run/sshd

然而/var/log/auth.log仍然显示

received signal 15; terminating

这个后来发现是自己service stop留下来的印记 佛了

最终的最终,发现是当时在学校的公网里面学校关了80端口,在ssh的时候换个端口,比如指定8022就好了。

不知如何使用scp传输文件

本机子网掩码0xffffff00,服务器子网掩码0xff000000,本机已关闭防火墙,22端口开放,从本机可ping服务器,可ssh,scp传送文件,从服务器无法ping本机。

后来发现是我没有理解在ssh这个过程中公私钥的使用问题。参考一篇知乎回答详细学习了一下。反思了前面所陈述的问题,结合ssh中公私钥的使用,我们来分析一下。

首先在ssh进行登录的时候,有几种情况。

而从上面这个过程可以看出来,我本地保存了服务器的公钥,但是本地的公钥并没有提供给服务器。所以我在服务器scp想传送给本机文件的时候,由于找不到这个公钥,就没办法在服务器上scp xxx文件 mypc@xxxx: / / / 这样传送。但是有个方法是,在我的本机上,scp targetserver@xxxx: /// ./location/on/mypc 这样传递文件。