伟明部落格

ssh免密登录

发布于 2022-04-18 18:00:55

实验环境:使用的是CentOS 7.6系统

我们经常用ssh来从客户机登录到服务器上,在输入密码的时候感觉很麻烦,特别是要在经常登录的情况下。有没有可以免输入密码的的办法呢?答案是:有的!

下面,有两台机器: 一台是ssh客户端机器(主机名是vultr); 一台是ssh服务端机器(主机名是iZj6c262htpobd1pfkqlqgZ,运行sshd服务)

首先,在客户端机器上,运行ssh-keygen命令生成公钥和私钥, 运行这个命令, 一直按回车键,用默认选项就可以了。

[root@vultr ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:kWSVyDrZkUf1h6Fw/g8aR2ghJ4jz/Bqlt3K/CUOvHP8 root@vultr.guest
The key's randomart image is:
+---[RSA 2048]----+
|       oo**o= .  |
|      oo*.oB . o |
|       Boo  = + .|
|      + +... o . |
|       .++. . +  |
|        o.o. + o |
|         ++.o   .|
|        o.o* .   |
|         oo.=oE  |
+----[SHA256]-----+

这样就在~/.ssh目录上生成两个文件,一个是私钥文件id_rsa,另一个是公钥文件id_rsa.pub

[root@vultr ~]# cd .ssh
[root@vultr .ssh]# ls
id_rsa  id_rsa.pub

然后,运行下面这个命令,输出公钥文件id_rsa.pub的内容

cat id_rsa.pub

复制输出的公钥,然后登录服务端机器。

服务端机器上,将刚才复制的公钥保存到~/.ssh/authorized_keys文件中

[root@iZj6c262htpobd1pfkqlqgZ ~]# cd ~/.ssh
[root@iZj6c262htpobd1pfkqlqgZ .ssh]# vim authorized_keys  # 编辑authorized_keys文件,将刚才复制的内容粘贴进来(如果原先有别的公钥,另起新的一行),然后保存 

修改文件权限,增加安全性

[root@iZj6c262htpobd1pfkqlqgZ .ssh]# chmod 600 authorized_keys

重启服务端的sshd服务,使配置生效

[root@iZj6c262htpobd1pfkqlqgZ .ssh]# service sshd restart

然后,在客户端机器上,用ssh登录就不用输入密码,直接登录上了。

更新于 2025-11-09 11:18:41