ssh免密访问对端服务

ssh免密访问对端服务

姓名 IP 端口
ssh01 192.168.200.46 22
ssh02 192.168.200.47 22
ssh03 192.168.200.48 2200

1、用户之间互相免密访问

1.1 生成密匙

#服务端生成密匙
root@ssh01:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
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:0S1OQouQJnrU/XluACpeHXT6RXWSpjlR2kUCDK33tBY root@ssh01
The key's randomart image is:
+---[RSA 3072]----+
|   ..+. ++o+=o+  |
|  o +.+= +++o=   |
| o o oo++o*=o    |
|. o o ..=**.E    |
| o o    S=.+ o   |
|  .       o +    |
|         . .     |
|                 |
|                 |
+----[SHA256]-----+
#会在该用户下生成俩文件
root@ssh01:~# ll .ssh/
总用量 16
drwx------ 2 root root 4096  7月 11 13:47 ./
drwx------ 6 root root 4096  7月 11 13:47 ../
-rw------- 1 root root 2590  7月 11 13:47 id_rsa        # 私匙
-rw-r--r-- 1 root root  564  7月 11 13:47 id_rsa.pub    # 公匙

1.2 分发密匙

#将密匙分发到对端服务器
root@ssh01:~# ssh-copy-id 192.168.200.47

#会将服务端的公匙拷贝到客户端,在客户端下生成一个authorized_keys文件
root@ssh02:~# ll .ssh/
总用量 12
drwx------ 2 root root 4096  7月 11 13:50 ./
drwx------ 6 root root 4096  7月 11 13:50 ../
-rw------- 1 root root  564  7月 11 13:50 authorized_keys


#如果对端无法ssh访问的通,可以手动将拷贝过去的id_rsa.pub文件里的内容追加到~/.ssh/authorized_keys文件当中
[root@ssh02 ~]# mkdir .ssh
[root@ssh02 ~]# chmod +700 .ssh

[root@ssh02 ~]# cd .ssh/
[root@ssh02 .ssh]# cat id_rsa.pub > authorized_keys

1.3 实验测试

#实验测试
root@ssh01:~# hostname -I
192.168.200.46 
root@ssh01:~# ssh 192.168.200.47

root@ssh02:~# hostname -I
192.168.200.47

2、非22端口如何不指定端口登录

2.1 分发密匙

#分发密匙到非22端口的机器上面
root@ssh01:~# ssh-copy-id -p 2200 192.168.200.48

#会将服务端的公匙拷贝到客户端,在客户端下生成一个authorized_keys文件
root@ssh03:~# ll .ssh/
总用量 12
drwx------ 2 root root 4096  7月 11 13:59 ./
drwx------ 6 root root 4096  7月 11 13:59 ../
-rw------- 1 root root  564  7月 11 13:59 authorized_keys

2.2 实验测试

方式一:

#一般非22端口是需要指定端口登录的
root@ssh01:~# hostname -I
192.168.200.46 
root@ssh01:~# ssh -p 2200 192.168.200.48

root@ssh03:~# hostname -I
192.168.200.48

方式二:

#但是有些场景下我们需要不指定端口登录
#创建config文件
root@ssh01:~# vim .ssh/config
root@ssh01:~# cat .ssh/config
Host ssh03
        User root
        Hostname 192.168.200.48
        Port 2200
        Identityfile ~/.ssh/id_rsa
root@ssh01:~# hostname -I
192.168.200.46 
root@ssh01:~# ssh ssh03

root@ssh03:~# hostname -I
192.168.200.48 

2.3 config配置含义

  • Host
    服务器别名,只要是合法的变量名称且不重复即可,可任意指定,ssh命令通过该名称来连接到指定服务器,比如上面的 ssh ssh03 。
  • Hostname
    服务器地址,可以是域名,也可以是ip地址。
  • Port
    端口号,默认为22,只有修改了ssh连接的默认端口才需要配置此参数
  • User
    ssh的登陆用户名
  • IdentityFile
    ssh 私钥文件的地址(不带.pub后缀的文件)