linux ssh config详解
SSH 配置文件路径
Linux 系统的 SSH 配置文件通常位于 /etc/ssh/sshd_config
(服务器端配置)和 ~/.ssh/config
(客户端配置)。服务器端配置需要管理员权限修改,客户端配置仅对当前用户生效。
常见服务器端配置项(sshd_config
)
Port
指定 SSH 服务监听的端口号,默认是 22
。可以改为其他端口以提高安全性。
示例:
Port 2222
ListenAddress
限制 SSH 服务监听的 IP 地址。默认监听所有地址(0.0.0.0
)。
示例:
ListenAddress 192.168.1.100
PermitRootLogin
是否允许 root 用户直接登录。建议设置为 no
以提高安全性。
示例:
PermitRootLogin no
PasswordAuthentication
是否允许密码登录。建议禁用密码登录,改用密钥认证。
示例:
PasswordAuthentication no
PubkeyAuthentication
是否启用公钥认证。默认是 yes
,推荐保持开启。
示例:
PubkeyAuthentication yes
AllowUsers
限制允许登录的用户,多个用户用空格分隔。
示例:
AllowUsers alice bob
DenyUsers
禁止指定的用户登录。
示例:
DenyUsers hacker
MaxAuthTries
设置单个连接的最大认证尝试次数。默认是 6
。
示例:
MaxAuthTries 3
ClientAliveInterval
设置服务器向客户端发送保活消息的间隔(秒),防止连接超时。
示例:
ClientAliveInterval 60
常见客户端配置项(~/.ssh/config
)
Host
定义主机别名,用于简化连接命令。
示例:
Host myserver HostName 192.168.1.100 Port 2222 User alice
之后可以通过 ssh myserver
直接连接。
IdentityFile
指定用于认证的私钥文件路径。
示例:
IdentityFile ~/.ssh/id_rsa_custom
ProxyJump
通过跳板机连接目标主机。
示例:
Host target HostName 10.0.0.5 ProxyJump jumpserver
StrictHostKeyChecking
是否严格检查主机密钥。设置为 no
可避免首次连接时的提示。
示例:
StrictHostKeyChecking no
UserKnownHostsFile
指定自定义的已知主机文件路径。
示例:
UserKnownHostsFile ~/.ssh/custom_known_hosts
配置生效方法
修改 sshd_config
后需重启 SSH 服务:
sudo systemctl restart sshd
客户端配置无需重启,直接生效。
注意事项
- 修改
sshd_config
前建议备份原文件。 - 客户端配置优先级:命令行参数 >
~/.ssh/config
> 系统默认配置。 - 密钥文件权限需设置为
600
:
chmod 600 ~/.ssh/id_rsa
通过合理配置 SSH,可以显著提升安全性和使用便捷性。