跳至内容

ssh通过密钥登录的方法

发布日期:
作者:
评论数:暂无评论

一:生成密钥对

1. 如果本地端是Windows系统,打开cmd,输入下面命令

ssh-keygen

可以按回车用默认的设置,也可以根据提示自定义密钥文件的位置和名称。默认情况下, 密钥会保存在c:\user\你的用户名\.ssh\目录下(下面都假设你用了默认路径)。在过程中推荐添加密码短语(passphrase),这样即使私钥泄露了,如果不知道密码短语,也无法使用私钥登录服务器。如果你不需要密码短语,到这一步时无需输入直接按回车即可。

2. 保存密钥对,在c:\user\你的用户名\.ssh\目录下,你会看到两个文件:

  • id_rsa : 私钥
  • id_rsa.pub:公钥

二:将公钥上传至服务器

1. 使用scp命令上传公钥到服务器需要密钥登录的用户的.ssh目录,并重命名为authorized_keys

在cmd中输入命令:

scp c:\Users\你的用户名\.ssh\id_rsa.pub user@remote_host:/home/user/.ssh/authorized_keys

这样用户user的公钥就上传成功了(将命令里的user替换成自己的用户名)。

三、测试用户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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注