ssh通过密钥登录的方法
发布日期:
作者: 西木
评论数:暂无评论
一:生成密钥对
1. 如果本地端是Windows系统,打开cmd,输入下面命令
ssh-keygen
可以按回车用默认的设置,也可以根据提示自定义密钥文件的位置和名称。默认情况下, 密钥会保存在c:\user\你的用户名\.ssh\
目录下(下面都假设你用了默认路径)。在过程中推荐添加密码短语(passphrase),这样即使私钥泄露了,如果不知道密码短语,也无法使用私钥登录服务器。如果你不需要密码短语,到这一步时无需输入直接按回车即可。
2. 保存密钥对,在c:\user\你的用户名\.ssh\
目录下,你会看到两个文件:
id_rsa
: 私钥id_rsa.pub
:公钥
如果是windows 11 24h2及以后的版本,你会看到的两个文件是:
id_ed25519
: 私钥id_ed25519.pub
:公钥
二:将公钥上传至服务器
1. 使用scp命令上传公钥到服务器需要密钥登录的用户的.ssh目录,并重命名为authorized_keys
在cmd中输入命令:
scp c:\Users\你的用户名\.ssh\id_rsa.pub user@remote_host:/home/user/.ssh/authorized_keys
这样用户user
的公钥就上传成功了(将命令里的user替换成自己的用户名,如果是windows 11 24h2及以后的版本,命令里本地的公钥文件换成相应的名字)。
三、测试用户user
使用密钥对登录服务器
1. 首先确认服务器ssh配置文件开启了密钥登录
sudo vi /etc/ssh/sshd_config
如果能找到下面这行并且为yes表示开启了密钥登录:
PubkeyAuthentication yes
2. 在本地端cmd中输入以下命令即可登录:
ssh -i c:\Users\你的用户名\.ssh\id_rsa user@remote_host
注意密钥的路径替换成自己的,如果在生成密钥对的时候添加了密码短语,回车后还需要输入密码短语才能登录服务器。
首次使用密钥登录需要指定私钥路径,以后登录直接ssh user@remote_host即可。
四、 服务器禁用ssh密码登录的方法(可选,但建议)
编辑 SSH 配置文件/etc/ssh/sshd_config:
sudo vi /etc/ssh/sshd_config
找到以下行将yes改为no并且去掉注释:
PasswordAuthentication no
重启 SSH 服务生效:
sudo systemctl restart ssh