sshd
默认情况下大部分发行版并不安装 ssh 服务器,需要我们自己安装通常是 openssh-server
包。它会提供一个 sshd 守护命令,我们可以直接运行他来启动 ssh 服务器,当然更好的方式是通过 systemd 这样的工具来管理 ssh 服务:
debian 中是 ssh.service
SSH 服务器配置
sshd 的配置文件在 /etc/ssh
目录中:
/etc/ssh/sshd_config
: 配置文件/etc/ssh/ssh_host_ecdsa_key
: ECDSA 私钥/etc/ssh/ssh_host_ecdsa_key.pub
: ECDSA 公钥
当然还有一些其他的算法生成的公钥和私钥。主要他们都是自动生成的服务器端的公钥和私钥,如果重装 sshd 那么这些密钥会自动重新生成。而sshd_config
是 ssh 服务器的主要配置文件。该配置文件中每个命令占据一行,每行都以option value
这样的形式组织,通常 sshd 服务启动之后开箱即用,当然最好更改其中的一些参数来达赖安全访问的目的:
AllowGroups groupName1 groupName2..
:指定允许登陆的用户组AllowUsers userame1 username2..
:指定允许登陆的用户名, 还可以是username@ip
来只允许某个用户从某个 ip 登陆Port 22
:指定 sshd 监听的端口,默认就是 22。可用更改此端口来降低系统因网络扫描而带来的受到攻击的危险, 注意则通常还需要在防火墙以及 SELinux 策略中允许该接口PermitRootLogin no
:限制 root 用户使用 ssh 登陆,也可以是prohibit-password
即不能使用密码登陆 root 用户而强制使用密钥登陆PasswordAuthentication no
:即禁用密码登陆,注意在此之前一定要部署好密钥
避免断线的设置,主要是在当客户端长时间不操作时会自动断开,下面的设置可以在每个一段时间像客户端发送一次心跳来保持连接,实际上有些 ssh 客户端也支持从客户端像服务器发送心跳的功能:
ClientAliveInterval 60
:表示每隔 60s,从服务器向客户端发送一次心跳ClientAliveCountMax 3
:表示客户端多少次心跳无响应之后,服务端才会认为客户端已经断开连接,然后断开连接
注意更改后需要重新 systemctl daemon-reload sshd
服务。