公司机器需要经由跳板机登录,这造成了以下日常操作变得繁琐
两次登录: 需要先登录跳板机,再由跳板机登录目的机器
拷贝文件: 需要先拷贝到跳板机,再由跳板机拷贝到目的机器(或本地)
查看集群内web服务: 需要登录远程桌面,在远程桌面浏览器中使用
本文将介绍一些ssh使用技巧,使得跳板机对用户透明,简化日常操作
Prelude(需自行配置免密登录)
无密码登录
将自己的public key写入目标机器的authorized_keys即可实现无密码登录
ssh-keygen
mkdir .ssh && cd .ssh && echo ''public key' > ./authorized_keys
ssh config 文件
每次都在命令行输入大量参数费时费力,可以把常用的一些配置保存在ssh的配置文件中
用户自己的ssh配置文件为~/.ssh/config
一个样例配置如下(后面会有详细讲解)
Host perjump
HostName 192.168.1.1
User <你的用户名>
Port 8220
KeepAlive yes
ServerAliveInterval 60
ControlMaster auto
Host bj
HostName 192.168.1.2
User <你的用户名>
ForwardAgent yes
ProxyCommand ssh perjump nc %h %p
直接登录目的机器
跳板机配置
解释:
Host perjump #是给跳板机一个别名(perjump)
HostName 192.168.1.1 #跳板机的ip或者主机名
User <你的用户名> #登录主机的用户名
Port 8220 #远程登录端口号
与直接在命令行输入
ssh <你的用户名>@192.168.1.1 -p8220
效果相同。
有了这段配置之后,只需要在命令行输入跳板机的别名就可以按配置登陆了
ssh perjump
目的机器配置
Host bj
HostName 192.168.1.2
User <你的用户名>
ForwardAgent yes
ProxyCommand ssh perjump nc %h %p
ProxyCommand中命令为先登录跳板机(perjump),在跳板机中用nc(netcat)向目的机器转发。这样我们就能使得跳板机对用户透明
开启ForwardAgent使得跳板机使用本地机器的public key作为身份验证。这样就无需使用跳板机自身的public key, 目的机器只用上只用将本地机器的public key写入authorized_keys中就可实现无密码登录
有了这段配置之后,只需要在命令行输入目的机器的别名就可以按配置登陆了
ssh bj
直接在本机和目的机器之间拷贝文件
ssh的配置文件对scp同样有效。前文的配置文件就能实现使用scp直接在本地和目的机器直接拷贝文件