SSH,


什么是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

相关内容