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后缀的文件)