SSH是Linux下远程管理的工具,默认端口号:22
查看端口的文件:/etc/services
首先在客户端和服务端配置静态ip
ifconfig #查看ip
1、ssh 服务端用户名@服务端ip地址 #在客户端连接服务端
2、ssh -l 服务端用户名 服务端ip地址 # -l 指定用户名,指定用户名去访问连接服务端
测试:在客户端用ssh命令连接172.25.254.169主机的root用户
当前主机第一次连接陌生主机时,会访问是否继续(理论上应该是对公钥的确认),确定连接后会自动建立 .ssh/know_hosts 文件,此文件记录的是连接过的主机信息,后面连接此主机时就不会再次访问
exit #退出当前连接的主机
注意:上面的连接方式是不能打开远程主机的图形功能,如果需要打开远程主机图形功能需要加上 -X
具体步骤:
1、生成锁和钥匙
ssh-keygen #生成密钥的命令
Enter file in which to save the key (/root/.ssh/id_rsa): #保存加密字符的文件用默认
随机加密数是在/dev/random 下取的
2、加密ssh用户的认证
在服务端:
ssh-copy-id -i /root/.ssh/id_rsa.pub 加密用户名@主机ip
ssh-copy-id #加密命令
-i #指定密钥
/root/.ssh/id_rsa.pub #密钥
3、验证
1.客户端连接时需要密码
2.把解密文件传输到客户端则不需要密码
1)把服务端把服务端文件复制到客户端(上传文件)
scp /root/.ssh/id_rsa [email protected]:/root/.ssh/
复制 服务端文件 客户端:位置
2)在客户端把服务端文件复制到客户端(下载文件)
scp [email protected]:/root/.ssh/id_rsa /root/.ssh/
复制 服务端:文件 客户端位置
如果用户没有/root/.ssh目录,在复制时就会自动生成一个.ssh文件,可以建立一个/root/.ssh目录,但是权限会比系统的大,需要手动修改权限
authorized_keys #当此文件被服务端删除,客户端解密文件失效,连接需要密码
cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys #在服务端重新生成锁文件,解密文件功能恢复,客户端不需密码
原理:A主机免密登录B主机
1、A主机需要生成密钥对(公钥和私钥),并将公钥远程发送给B主机,B主机对A主机的公钥授权追加到文件authorized_keys(专门存放公钥)
2、当A发送登录请求时,B会寻找文件里面的公钥并进行公钥的对比,如果一样,B会生成一个随机字符串并用A的公钥加密后发送给A
3、A用私钥进行解密,并将解密后的得到字符串发送给B,B验证字符串是否一致,如果一致则成功登录
具体步骤:
在client端生成密钥对
[root@client ~]# ssh-keygen #生成密钥对
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:
03:ed:b8:bb:fc:1c:17:e4:0f:fe:6e:7e:f0:ba:bc:f4 root@Linux
The key's randomart image is:
+--[ RSA 2048]----+
| |
| . |
| . . . |
| + o |
| . S + |
| . o +. |
| . . o oo |
| . o o +..o |
| +oo +O=E |
+-----------------+
将公钥远程拷贝到server端的root家目录指定位置:
[root@client ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
The authenticity of host '192.168.169.133 (192.168.169.133)' can't be established.
RSA key fingerprint is 98:d1:a4:f6:69:df:cf:30:bc:cc:9f:05:49:c5:6e:5b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.169.133' (RSA) to the list of known hosts.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
在server查看:
[root@server ~]# cd .ssh
[root@server .ssh]# ls
authorized_keys
[root@server .ssh]# cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2VKF/ePnhV9mSxribcyJS3W8JzIMS+z4WkocyP7MMGAME+A020cQWQ0w9qfWCkiTIq81KNQ3q0u3ND/vFpVu840FSYudCfkWDQSCrv899BnNo96ojs58r4snFkWEb09+4NOQT6Jlo07dxIwTVBlEzcf0l1ZpzsFm1TehqlLS1FJCWejRBz36UeuK6+g4fEfuEShFs5eB2n573Ao97JPUwFIzyQQjoI3z50cvPebLcYSau5c9vkDU6GXJkc5EPdmuR4Hac4MQuLnke+czqvjuq4BtKCjtCtjRl8ulrjXd+prbUYDoCMM7fSuMgWTQK76Pslcn+jdWp/eR23flag2JbQ== root@Linux
测试验证:
[root@client ~]# ssh [email protected]
Last login: Sun Apr 7 00:05:25 2019 from 192.168.169.134
vim /etc/ssh/sshd_config #打开文件修改原始认证方式
1.禁止原始认证方式
78 PasswordAuthentication no|yes #开启或关闭ssh的默认认证方式(改完之后重启服务,其中no不用密码登录。)
#在78为yes的情况下操作以下步骤:
48 PermitRootLogin no|yes #开启或关闭root用户的登陆权限(其他用户可以登录)
AllowUsers westos #用户白名单,当前设定是只允许westos登陆
DenyUsers linux #用户黑名单,当前设定是只不允许linux登陆
注意:白名单和黑名单只允许出现一个,以上操作都要重启服务
测试:在服务端将 student 用户设在白名单里面,在服务端连接显示如下:( root 用户连接不上,student 可连接)