1. 1 目的

每次在SSH登陆时,或利用SCP上传下载文件时,都需要输入密码比较麻烦。本文介绍了Linux下经过简单几步配置就可以实现免密登陆的过程。 为说明方便,假设需要免密登陆的主机IP为 192.168.3.149。

2. 2 配置过程

2.1. 2.1 生成RSA密钥

SSH使用非对称密钥进行登陆,所以在此之前我们先要在本机生成一对密钥,对应的命令为:

$ ssh-keygen -t rsa

在此命令会在 ~/.ssh 目录下生成两个文件:id_rsaid_rsa.pub,分别为对称加密的私钥和公钥。 如果不确定生成是否成功,那么就执行一次本操作。输入后,一路回车即可,如果出现有 Overwrite (y/n)? 字样,说明已经存在。 如下所示:

[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)?
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
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:WZYxJAvW8Ipa2ZOdcz1UhimAQwdaGKfsBPjd0nCw+wI root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| .. o=O=+o+  oo  |
|.  ooB++.o.+oo   |
| . .*= .o +..    |
|  .oo=o+ = o     |
|  E *.= S . o    |
|   + . . o   .   |
|  . . .          |
|     .           |
|                 |
+----[SHA256]-----+
[root@localhost ~]# ssh-copy-id

2.2. 2.2 上传公钥

有了以上的密钥对以后,我们需要将公钥上传(即 id_rsa.pub 文件, id_rsa 是私钥,千万要保管好) 公钥上传有两种方式:直接上传和手工上传。 注意:无论哪种方式,在操作过程中都会需要输出至少一次密码。

  • 直接上传 在很多Linux系统上,都提供了 ssh-copy-id 命令,可以直接完成密钥上传,格式如下所示:
    $ ssh-copy-id -i ~/.ssh/id_rsa.pub  root@192.168.3.149
    
  • 手工上传 由于在Windows下,由于没有 ssh-copy-id,我们需要手要上传。上传分为两步: 1) 上传公钥 这一步的任务是将生成的解密上传至指定服务器上,命令如下:
    $ scp ~/.ssh/id_rsa.pub root@106.12.31.101:
    
    注意:最后有个冒号,表示root用户的根目录,必需要加,否则无法上传成功

3. 3 在目标服务器上添加密钥

这一些的目标是将本机的密钥添加至服务器的免密登陆主机列表中(对应的配置文件为 ~/.ssh/authorized_keys),执行命令为:

$ cat id_rsa.pub >> ~/.ssh/authorized_keys

经过以上配置,即可实现免密登陆。

4. 4 注意事项

4.1. 4.1 连接提示

注:第一次连接ssh会出现提示:

Are you sure you want to continue connecting (yes/no)?

使用以下命令则不会显示: ssh -o stricthostkeychecking=no。需要注意一点,这种方式只是暂时对当前登陆有效,如果要永久解决需要在 /etc/ssh/ssh_config 中添加 StrictHostKeyChecking no

4.2. 4.2 目录链接

对目录创建软链接命令 ln -s /opt/apache-tomcat-8.5.57/webapps/ROOT/ aliweb 例如

root@server00:~# ln -s /opt/apache-tomcat-8.5.57/webapps/ROOT/ aliweb
root@server00:~# ls -l
total 76
-rw-r--r--  1 root root  584 Jun 21  2022 ali.pub
lrwxrwxrwx  1 root root   39 Apr  2 07:24 aliweb -> /opt/apache-tomcat-8.5.57/webapps/ROOT/
drwxr-xr-x  2 root root 4096 Mar 25 00:00 backups
drwxr-xr-x  6 root root 4096 Jun 20  2022 codes
drwxr-xr-x  8 root root 4096 Jun 20  2022 downloads
drwxr-xr-x  4 root root 4096 Mar 28 12:03 ebooks
drwxr-xr-x  5 root root 4096 Jun 20  2022 files_temp
drwxr-xr-x  8 root root 4096 Jun 20  2022 hao
drwxr-x---  3 root root 4096 Feb 27  2021 log
-rw-r--r--  1 root root  272 Jun 28  2022 mylog_sorted.txt
-rw-r--r--  1 root root 9724 Apr  2 01:00 mylog.txt
drwxr-xr-x  3 root root 4096 Apr  2 07:22 myweb
-rw-r--r--  1 root root   40 Jun 28  2022 name.txt
drwxr-xr-x  4 root root 4096 Jul 15  2022 repos
drwxr-xr-x  2 root root 4096 Jul 16  2022 scripts
drwxr-xr-x  2 root root 4096 Mar 14 11:51 stock
drwxr-xr-x  3 root root 4096 Mar 28 07:24 temp
drwxr-xr-x 23 root root 4096 Jun 21  2022 tests
root@server00:~#

5. 5 总结

  1. 上传本地公钥,在 ~/ssh 目录下输入 scp .\hao_key.pub tx1:
  2. 登陆目标主机,使用cat hao_key.pub >> .ssh/authorized_keys

6. 附: 常用密钥对 hao_key

6.1. 公钥 hao_key.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5dZCnxpOtCRaU5UCcPK0orMCj9UN+UvOPz4zK9Byo62Fe2d8V4Bv5yG+5Vw6w1N1vT5RacecnWvyzl/d9TQLqs7kR3bgdKkOOnh86CDL8XW/7OGG0PSUZ9OFfpZBFvjjC43JSyzoKyGpyEowKqlm8qt/yypUDu7lgxNWAM3f/j9IQzjYIRruwySNOPy4QrLcUZX1LMiBqfyVT4K85sd+CJFi91X7Webnvk7kPG7xyIkEYb7F42Qq6+B5E6C8RU+FT1EOAS24ku6agzw76O11LQkw9Hml1YFvsz4VLPKoyWCY5FyNh+jQ5RFjOZRzlAjyVfHFwSA3lqgSvF4UIePcp hao@DESKTOP-HU85O49

6.2. 私钥 hao_key.pem

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAuXWQp8aTrQkWlOVAnDytKKzAo/VDflLzj8+MyvQcqOthXtnf
FeAb+chvuVcOsNTdb0+UWnHnJ1r8s5f3fU0C6rO5Ed24HSpDjp4fOggy/F1v+zhh
tD0lGfThX6WQRb44wuNyUss6CshqchKMCqpZvKrf8sqVA7u5YMTVgDN3/4/SEM42
CEa7sMkjTj8uEKy3FGV9SzIgan8lU+CvObHfgiRYvdV+1nm575O5Dxu8ciJBGG+x
eNkKuvgeROgvEVPhU9RDgEtuJLumoM8O+jtdS0JMPR5pdWBb7M+FSzyqMlgmORcj
Yfo0OURYzmUc5QI8lXxxcEgN5aoErxeFCHj3KQIDAQABAoIBABAs5NT9SNwKsuGB
rUTzNdcaWiLyvVRDP+MHIyyAZg+FmBSBxCdQSKBcjwIHScy6hCW1Nyc8UADquqef
VYKkOODnk/iu8eP5T7Mcr3SMSoYgUCgFHuBthNLivNVux0qN8L1uwQXfm8xc9ovE
elpjyTffX3D5ok2VDfIWuNhZpNmxN31732fkmx5cZRUbZI/6ViWzvpD/Rwp0swZ1
IaQt3b/3DuqdnpvUxZRSZIbyzSDTFSX/FBPlNQQciiH6CSMW5905yDThKrLHZsBY
FjfTLexOC+u+TQ19rAawoPNK5GOuz7kIKym+5F5sX4OSkxF7ETNdWSQW9toDezUC
LwzXw0ECgYEA5Z4VtjdIyN/7FrAFOCV3x2SKbXcPyCzGqrQ1Vhw4+E9DbKBVP9MR
IkQiOJ/PwTaO5KQ6UV5l0zhN0FqSb3CJxpp52IimSkoaB6izWIEKI6hf1Evp88PY
PgQdxo9cw86C6NWyvGzf3ZHD2paZS/X8KCt3TwXMMsg11tTVk05RdH0CgYEAzsSe
e7TdkToqJ8fyOjOhlTdie//xQcUqtT4HEQolg4LruKATF1tlqbbo9EhF4xCSMqof
EYELF5A18Bvzb9uMKqmDvInyMR0AJEPwbH1t4J+pT43bvycb2DRxoHYxmtqkieQG
KZqKv2VdHU1hGxkHCNcBh2PZxqYJtiky5LFt6R0CgYEA3HSdD+egYAx7/FpfiHqg
t7XWGic35c7npzmCA/zwzab8ayy87JxvVODpokf9pdoF84uh2kGxrcvfGe37rjb0
cNQbrEP2tFjVCQl1t8GcxIOCDkgchMhBs7ksBVnbjLuXgIi8JKC7hvXOfu4cnIu9
36trz1kXpqIG3w5VSCrnldkCgYEAzomopXltOXwYT9RyKaEZbqv8PFDU9RW2K4Ti
GitAfbVxMOL1Lwek7XpACIOJC9+pqeI1Vo7IPalXt5iz+rAbuyHI7bP9sQF++rrC
lhxUfWP/A/B36OFv9u+r8NUfh8ePRA35+eTdY4IlGPgKX78IP9RFOrCLANsqKEPP
CpIRcCECgYEAgTml2qrU2IEHXVeRS3aC2D/s+F+pzrCibrKyl9qoK3E3uJRU8vDQ
2utCqX7l9twIXF3bVP0/tUpUpITT+qwwjnkB4ptNcfRLgmTdOcBGzD85h44CBvZi
UZuVkOT++WDHiMc7hQbZEIqmqkvsxGjm1Ik1QvkcF70usMzm+CcC8LY=
-----END RSA PRIVATE KEY-----

results matching ""

    No results matching ""