本文是我对自己ssh笔记的整理。

允许用户使用密码登录

目前很多云服务提供商的vps都是只能通过公钥认证访问,而不可以使用password登录的,比如 AWS、CONOHA等。

但是我们在没有严格要求安全性的团队中,常常直接开新用户并使用password访问,并不去收集团队成员的公钥再使用 ssh-copy-id 远程拷贝进vps。

所以,我们就需要手动开启sshd的允许使用password登录的功能。

而与允许使用password登录功能相关的配置在文件 /etc/ssh/sshd_config 中,如下图所示:

就如同注释中所说的,只将 PasswordAuthentication 设置为 no ,用户便只能通过使用公钥登录。反之,将 PasswordAuthentication 设置为 yes , 用户便可以通过使用password登录。

同样,设置其中的 PubkeyAuthentication 可以控制是否允许使用公钥登录。

保持ssh的持续连接

OpenSSH基于安全的理由,如果用户连线到SSH Server后闲置一段时间,SSH Server会在超过特定时间后自动终止SSH连线。可能出现如下错误:

1
Write failed: Broken pipe

这是因为如果有一段时间在SSH连接上无数据传输,连接就会断开。解决此问题有两类方法,一个从SSH客户端处解决,另一个从SSH服务端处解决。

在客户端设置

方法很简单,只需在客户端电脑上编辑(需要root权限) /etc/ssh/ssh_config ,并添加如下一行:

1
ServerAliveInterval 60

此后该系统里的用户连接SSH时,每60秒会发一个KeepAlive请求,避免被踢。

在服务器端设置

如果有相应的权限,也可以在服务器端设置,即编辑 /etc/ssh/sshd_config ,并添加:

1
ClientAliveInterval 60

使用如下命令重启SSH服务器后该项设置会生效。每一个连接到此服务器上的客户端都会受其影响。应注意启用该功能后,安全性会有一定下降(比如忘记登出时……)

1
/etc/init.d/sshd restart

另一种服务端设置的方式

编辑 /etc/ssh/sshd_config ,加入如下两个参数保存就可以:

1
2
TCPKeepAlive yes
ClientAliveCountMax 360

注:前一个参数表示要保持TCP连接,后一个参数表示客户端的SSH连线闲置多长时间后自动终止连线的数值,单位为分钟。

同样,重启sshd生效:

1
/etc/init.d/sshd restart