服务器配置SSH免密登录
一、背景与概念

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中提供安全的远程登录和其他安全网络服务,SSH通过公钥和私钥进行身份验证,确保数据传输的安全性,免密登录则利用这种机制,通过预先配置的密钥对,实现无需密码的自动登录。
二、生成SSH密钥对
1. 检查现有密钥
在生成新的SSH密钥对之前,首先检查是否已有现有的密钥:
ls -al ~/.ssh/id_*.pub
如果存在现有密钥,可以选择使用或备份后生成新密钥,如果没有,执行以下命令生成新的4096位RSA密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
按Enter键接受默认文件位置和文件名,然后根据提示输入密码短语(可选)。
2. 查看生成的密钥
ls ~/.ssh/id_
输出示例:

/home/yourusername/.ssh/id_rsa /home/yourusername/.ssh/id_rsa.pub
三、配置本地SSH客户端
编辑本地SSH配置文件~/.ssh/config
,添加以下内容以指定要使用的密钥文件:
Host your_server_alias HostName your_server_ip_or_domain User your_username IdentityFile ~/.ssh/id_rsa
将your_server_alias
替换为服务器别名,your_server_ip_or_domain
替换为服务器IP地址或域名,your_username
替换为远程用户名。
四、复制公钥到远程服务器
1. 使用ssh-copy-id
命令
ssh-copy-id -i ~/.ssh/id_rsa.pub your_username@your_server_ip_or_domain
系统会提示输入远程用户的密码,成功后再尝试登录时将不需要再输入密码。
2. 手动复制
如果ssh-copy-id
不可用,可以手动复制:
cat ~/.ssh/id_rsa.pub | ssh your_username@your_server_ip_or_domain "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
确保~/.ssh
目录和authorized_keys
文件具有正确的权限:

chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
五、测试免密登录
尝试使用SSH登录远程服务器,确保能够无密码登录:
ssh your_username@your_server_ip_or_domain
如果一切顺利,将直接登录而无需输入密码。
六、禁用SSH密码验证(可选)
为了增强安全性,可以禁用密码验证,仅允许公钥认证,编辑远程服务器上的SSH配置文件/etc/ssh/sshd_config
:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
保存文件并重启SSH服务:
sudo systemctl restart sshd # Ubuntu/Debian sudo systemctl restart sshd # CentOS/Fedora
FAQs
SSH免密登录的原理是什么?
SSH免密登录基于公钥和私钥的非对称加密机制,客户端生成一对密钥(公钥和私钥),将公钥复制到服务器的~/.ssh/authorized_keys
文件中,登录时,服务器使用公钥验证客户端的私钥签名,若匹配则允许登录,这种方式避免了传输密码的风险,提高了安全性。
2. 如果ssh-copy-id
命令不可用,如何手动设置免密登录?
如果ssh-copy-id
命令不可用,可以手动复制公钥,假设客户端计算机上已生成id_rsa.pub
文件,可以使用以下命令将公钥内容追加到远程服务器的authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
设置远程服务器上.ssh
目录和authorized_keys
文件的权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
这样即可完成手动设置SSH免密登录。
小伙伴们,上文介绍了“服务器配置ssh免密登录”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复