什么是SSH(Secure Shell)
一种专为远程登录会话和其他网络服务提供安全性的协议。
通俗的说法就是:一台机器(client)需要访问另一台机器(server),如何实现免密码访问呢?那么就可以使用SSH协议啦。
使用方法
服务器(server,被访问方)和客户端(client,访问方)均可作为产生公、私钥的机器,但客户端须存放私钥。一般情况下,在客户端产生一对公、私钥。
(例子中使用的是从一台机器的root用户访问francis用户,模拟的是client访问server,原理相同)
例:从client访问server,client端用户是root,server端用户是francis,那么可以先在client端/root/.ssh目录下使用密钥生成命令
ssh_keygen
,然后将公钥拷贝到server端对应用户名
/home/francis/.ssh/authorized_keys
下,(使用服务器端哪个用户名登录就将公钥拷贝到该用户名下的/.ssh/authorized_keys内)。
这样操作完成之后,就可以在client端使用ssh username@ip命令登录到server端。
ssh francis@192.168.222.128
完整命令
以在client端生成公、私钥为例
# 在当前用户目录下产生一对公、私钥
ssh_keygen
# 将公钥拷贝至server端
cp id_rsa.pub /home/francis/.ssh/authorized_keys
# 以server端用户francis身份通过SSH免密登录server
ssh francis@192.168.222.128
注意
1、当authorized_keys 中存有多个公钥时,后续的公钥将以追加至其末尾方式添加,命令为:cat id_rsa.pub >> authorized_keys。
2、不可随意更改公私钥的权限,默认是600,更改之后将会报错,如下方所示。
# 修改权限
chmod 644 id_rsa
# 访问出错
ssh francis@192.168.222.128
# 改回权限
chmod 600 id_rsa
3、退出远程访问时使用exit命令
4、client和server并非是固定不变的,随着访问和被访问的关系转变,它们的角色也将发生变化,这时就需要在server端(francis)生成公私钥,然后将公钥拷贝到root端authorized_keys。
cp /home/francis/.ssh/id_rsa.pub /root/.ssh/authorized_keys