一般系统验证用户身份,我们都是用的密码的方式。
其实还可以通过密钥的方式,进行用户身份验证。
参考这里:https://blog.csdn.net/yezhouyong/article/details/78315881
ssh-keygen
命令专门是用来生成密钥的。该命令有很多选项,这里列出了最基本的四个:
-
-t
用来指定密钥类型(dsa | ecdsa | ed25519 | rsa | rsa1
); -
-P
用来指定密语 -
-f
用来指定生成的密钥文件名 -
-C
用来添加注释
ssh-keygen -t rsa -P 123456 -f host -C 'my host key'
意思就是新建了密语为123456
注释为my host key
文件名为host
的密钥。此命令会生成host
和host.pub
两个文件,前者为私钥文件
,后者为公钥文件
。如果你想免密登录的话,请将密语设置为空。
比如我在 69 服务器上 想远程连接 76服务器,则需要在69上执行生成秘钥对的操作。
把生成的密钥对中的公钥,复制到76上,把公钥拼接到76的authorized_keys
注意:如果没有authorized_keys,则自己使用touch命令建一个。
#在本机上执行此命令,上传公钥 scp -P your_port host.pub user@hostname:/tmp #在服务器上执行此命令,追加到authorized_keys cd /tmp && cat host.pub >> ~/.ssh/authorized_keys #更改权限 chmod 600 ~/.ssh/authorized_keys
然后去76上,打开/etc/ssh/sshd_config
设置成:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
返回到69,
etl@lenovo-FFFFFFFFFF:~/.ssh$ ls
known_hosts
etl@lenovo-FFFFFFFFFF:~/.ssh$ cd ..
etl@lenovo-FFFFFFFFFF:~$ ssh -i ./76server lenovo@192.168.8.76
Enter passphrase for key './76server':
Welcome to Ubuntu 14.04.5 LTS (GNU/Linux 4.2.0-42-generic x86_64)
* Documentation: https://help.ubuntu.com/
369 packages can be updated.
303 updates are security updates.
New release '16.04.5 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
WARNING: Security updates for your current Hardware Enablement Stack
ended on 2016-08-04:
* http://wiki.ubuntu.com/1404_HWE_EOL
There is a graphics stack installed on this system. An upgrade to a
configuration supported for the full lifetime of the LTS will become
available on 2016-07-21 and can be installed by running 'update-manager'
in the Dash.
Last login: Thu Oct 11 13:49:57 2018 from 192.168.8.148
lenovo@lenovo-70FR0028CN:~$
如果想登录时必须同时有密码和私钥,则按照如下操作:
让服务器更安全,开启密码和证书双重验证,先修改SSH配置文件:
vim /etc/ssh/sshd_config
PasswordAuthentication 改为yes
然后再加一条:AuthenticationMethods publickey,password
重启SSH服务:/etc/init.d/sshd restart 或者 service ssh restart