SSH 远程管理主机服务¶
SSH (Secure Shell) 是基于 SSH 协议开发的一款远程管理服务程序 能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。
sshd 提供两种安全验证的方法:
- 基于口令的验证:
- 用账户和密码来验证登录;
- 基于密钥的验证:
- 本地私钥与服务器中的公钥进行比较;该方式相较来说更安全。
配置¶
几乎所有的 linux 发行版都默认安装了 sshd 服务。
sshd 服务默认配置文件:
cat /etc/ssh/sshd_config |grep -Ev '^$|#'
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
sshd 服务配置文件常用参数以及作用:
参数 | 作用 |
---|---|
Port 22 |
默认的sshd服务端口 |
ListenAddress 0.0.0.0 |
设定sshd服务器监听的IP地址 |
Protocol 2 |
SSH协议的版本号 |
HostKey /tc/ssh/ssh_host_key |
SSH协议版本为1时,DES私钥存放的位置 |
HostKey /etc/ssh/ssh_host_rsa_key |
SSH协议版本为2时,RSA私钥存放的位置 |
HostKey /etc/ssh/ssh_host_dsa_key |
SSH协议版本为2时,DSA私钥存放的位置 |
PermitRootLogin yes |
设定是否允许root管理员直接登录 |
StrictModes yes |
当远程用户的私钥改变时直接拒绝连接 |
MaxAuthTries 6 |
最大密码尝试次数 |
MaxSessions 10 |
最大终端数 |
PasswordAuthentication yes |
是否允许密码验证 |
PermitEmptyPasswords no |
是否允许空密码登录(很不安全) |
ClientAliveInterval 420 |
服务器端向客户端请求消息间隔时间,默认是0,不发送 |
ClientAliveCountMax 3 |
服务器发出请求后客户端没有响应的次数达到一定值,自动断开 |
UseDNS |
进行DNS正向A记录查询,防止客户端欺骗,关闭可加快连接速度 |
本地生成秘钥并上传至服务器。
ssh-keygen # 可一路回车
ssh-copy-id 192.168.11.130
必要的安全措施¶
考虑范围: 更改服务端口 ==> 拒绝口令认证 ==> 拒绝以 root 直接登录
sed -i 's,#Port 22,Port 2222,g' /etc/ssh/sshd_config
sed -i 's,#PermitRootLogin yes,PermitRootLogin no,g' /etc/ssh/sshd_config
sed -i 's,#UseDNS yes,UseDNS no,g' /etc/ssh/sshd_config
sed -i 's,PasswordAuthentication yes,PasswordAuthentication no,g' /etc/ssh/sshd_config
systemctl restart sshd
建议: 修改 sshd 配置时多开一个 ssh 连接窗口,以防自己被拒之门外。
最后更新: 2024年12月12日