ssh
ssh命令常用方式总结。
资源
安装
yum -y install openssh-server openssh-clients
使用
远程连接
ssh -p 22 username@ip
执行命令
ssh -p 22 username@ip <<EOL
some cmd;
EOL;
移除known_hosts
针对同个 ip:port, 签名发生变化。仍要继续登录的情形。OA
ssh-keygen -f "/home/scc/.ssh/known_hosts" -R "[192.168.107.192]:8022"
配置ssh
ssh_config简直是神奇,有了它,再加上免密登录,瞬间,让登录、机器间拷贝文件等,变得非常简单。
可以增加多个ssh客户端的配置。配置后的好处:输入ssh后,tab键后,有相应的提示。不需要额外输入各种参数。另外,对scp、ssh、sftp等应该都适用。
# cp $0 ~/.ssh/config
Host tencloud
HostName 1.15.47.218
Port 62289
User chaofml
ssh
由于配置好了,使用tencloud时,就非常的简洁。
ssh tencloud
scp
配置ssh/config,简直是神器啊,这样,scp的命令瞬间简省了很多,然后copy文件非常的方便呢。如下:
# scp jobvm:node* tencloud: # 直接行不通,网上有直接通过两个ip scp的
# 省略写法 jobvm: 但是冒号不能少
# 居然按tab还有远程文件的提示,
scp jobvm:node* .
scp node-v1* tencloud:
rm -f node-v1*
vim
# scp:// 协议部分
# jobvm 主机部分 跟文件部分有一个斜杠
# 主机/seq.txt 相对home的路径 主机//root/seq.txt 绝对路径
vim scp://jobvm/seq.txt
vim scp://jobvm//root/seq.txt
vim scp://root@example.com//root/seq.txt
sftp
配置ssh/config好后,使用起来也非常的简单。
rsync
# 本地拷贝到远程
rsync -av a.txt tencloud:
# 远程拷贝到本地
rsync -av tencloud:test .
本地端口转发
# 本地端口转发
Host forwardtest
HostName 10.172.41.206
User root
Port 62222
LocalForward 58080 127.0.0.1:58080
测试过程
# 远程的机器上,开启http测试服务
python3 -m http.server --bind 127.0.0.1 58080
# 本地机器执行 窗口不退出,转发不会停
ssh forwardtest
# 本地访问
curl localhost:58080
执行本地命令
#执行本地命令
#PermitLocalCommand yes
#LocalCommand echo 111
同理,可以执行远程命令
跳板机
如下,在本地环境,仅可访问jobvm,以它作为跳板机,可以访问caikun机器。多机跳转,orange配置。这就非常得强悍了,通过短短的配置,达到多个机器之间的跳转。
Host jobvm
HostName 10.172.41.206
User root
Port 62222
Host caikun
HostName 10.172.41.111
User root
Port 22
ProxyJump jobvm
Host orange
HostName 10.172.41.206
User root
Port 22
ProxyJump caikun
某个网端,批量经过跳板访问
host myjump
HostName 121.41.218.68
Port 8822
User root
host 10.155.0.*
User root
Port 22
ProxyCommand ssh myjump -W %h:%p