SSH实现免密钥连接不同的服务器
需要指出ssh协议存在多种实现方式,本文使用的是ssh的开源实现OpenSSH在Linux shell中的用法。
ssh的基本用法
ssh主要用于远程登录,登录指令即
ssh user@host
这里的user即为用户名,host即为远程主机地址。
ssh的默认端口是22,所以登录请求会发送至远程主机的22端口,可以使用参数p修改端口号
ssh -p 1234 user@host
上述方式是ssh的口令登录方式,每次在输入指令后还需要输入远程服务器的密码登录,较为繁琐,下面则是使用公钥登录即免密登录方式。
免密登录
通过密钥对进行连接。当不指定密钥文件时,使用的时默认的id_rsa
创建密钥对指令
ssh-keygen
-t: 指定密钥类型,默认是rsa,可以省略
-C:设置注释文字
-f:指定密钥存储文件名。默认id_rsa
具体操作如下:
- 创建密钥对
# 指定文件名
ssh-keygen -f ~/.ssh/xxx -C "xxx"
从而可以在.ssh路径下生成xxx 和 xxx.pub 为了方便输入还可以使用config配置主机,
# config文件需要放到 ~/.ssh/config
vi config
配置格式如下:
Host work
Hostname 121.0.0.1
Port 22
User root
- 复制公钥到指定的远程主机。默认文件是
~/.ssh/id_rsa.pub
# 以上述生成的xxx.pub 以及config中配置的work主机为例
-i: 复制指定的公钥到远程主机。
ssh-copy-id -i ~/.ssh/xxx.pub work
故下次连接时可直接使用下面方式免密钥登录服务器
ssh work