Linux 中 ssh host 代理配置及远程免密码登陆
1 前言
在登陆远程服务器时,很多时候会采用跳板机的方式登录,而 Linux 和 Mac 上没有免费的类似 Windows 上的 xsehll 工具,虽然 secure CRT 网上有破解版,但是存在安全隐患,所以使用自带的终端很安全方法,但是这又给维护人员带来了很大的不便,登录服务器需要 IP, 并且要先登录跳板机然后再登录目标机。
这里给大家介绍的方法是配置本地的 ssh 配置文件可以给目标机器一个别名,方便记忆区分,还可以配置代理机器( 即跳板机 ),这样节省了一些步骤,然后再通过配置免密码登录,可以大大节省登录机器的时间,提高开发及维护人员的生产力。
2 ssh host 代理配置
进入本机的 ssh 配置目录,直接在终端输入
cd ~/.ssh/
即可。编辑 config 文件, 如果没有可以手动创建。
添加配置信息
# 这是跳板机的配置,给跳板机的 IP 起个别名: jump_machine, 用户名: owen Host jump_machine HostName 192.168.1.4 User owen IdentityFile ~/.ssh/jump_machine # 这是目标机的配置,使用跳板机( jump_machine )做代理机器,别名: remote_srv_machine, 用户名: owen Host remote_srv_machine HostName 192.168.1.5 ProxyCommand ssh jump_machine -W %h:%p User owen
同一个跳板机可供众多机器做代理,按照同样方法配置即可。
3 远程免密码登录
上节介绍了跳板机代理的配置方法,为登录节省了一个步骤,但是在直接登录远程机器是还是需要输入两次密码,本节介绍下远程登录免密码的配置方法,这里只介绍本地和跳板机之间的免密码登录,这样也可以只输入目标机的密码而不需要输入跳板机的密码了,也是可以节省时间的。当然也可以配置下跳板机和目标机之间的免密码登录,在这里就不演示了。
生成 rsa 公钥和私钥:
ssh-keygen -t rsa
owen@ubuntu:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/owen/.ssh/jump_machine): # 这里输入要生成的文件名 Enter passphrase (empty for no passphrase): # 这里输入密码 Enter same passphrase again: # 这里重复输入密码 Your identification has been saved in /home/owen/.ssh/jump_machine. Your public key has been saved in /home/owen/.ssh/jump_machine.pub. The key fingerprint is: e3:67:c3:6b:35:10:14:fa:43:e0:0c:4f:51:c9:a2:23 owen@ubuntu The key's randomart image is: +--[ RSA 2048]----+ | .+=*.. | | . += + | | o oo+ | | E . . o | | ..S. | | .o . | | .o + | | ...oo | | +. | +-----------------+
用
ssh-copy-id
将公钥到跳板机中owen@ubuntu:~$ ssh-copy-id -i .ssh/jump_machine.pub owen@jump_machine
注意:
- ssh-copy-id 将公钥写到跳板机的
~/.ssh/authorized_keys
文件中 - 也可以直接将公钥内容复制到跳板机的
~/.ssh/authorized_keys
文件中
- ssh-copy-id 将公钥写到跳板机的
登录到跳板机不用输入密码
1. owen@ubuntu:~$ ssh jump_machine 2. Last login: Thu Nov 2 08:55:38 2017 from 192.168.1.3
常见问题:
- 第一次需要密码登录
- 总是提示输入密码( 生成密钥时的密码 ): 输入
ssh-add -k ~/.ssh/jump_machine
即把专用密钥添加到 ssh-agent 的高速缓存中