ssh使用
1. 设置秘钥登录(免密码登录)
1.1 产生秘钥对
- 产生秘钥:运行命令
ssh-keygen
,一路回车下来,会在~/.ssh
目录产生公钥和私钥,私钥放着,别泄露出去,公钥下一步使用。 - 秘钥包括私有部分(id_rsa)和公有部分(id_rsa.pub),将公有部分附加到远端服务器的指定文件中,文件为:
~/.ssh/authorized_keys
,如果没有这个文件,创建,并将公钥写进去。
注意:
- ~ 目录不能是777,否则无法登录,因为目录权限太开放。
- id_rsa文件,即私钥文件,权限600,否则权限太开放,不予连接。
2. 设置通过跳板机登录
设置跳板机的命令比较简单,加上ProxyCommand
这个可选项就行,比如,我的跳板机ip是192.168.1.1,ssh端口是22,用户是admin,那么,对应的ProxyCommand
可选项命令为:ProxyCommand ssh -q -x -W %h:%p -p22 admin@192.168.1.1
,方便使用,可以通过重定义一个命令hello
来通过跳板机登录:
alias hello=' ssh -o StrictHostKeyChecking=no -o "ProxyCommand ssh -q -x -W %h:%p -p22 admin@192.168.1.1"'
备注:
StrictHostKeyChecking
跳过是否将主机添加到信任列表的认证- 如果已经设置免密登录192.168.1.1,则不需要输入192.168.1.1的密码,否则,通过hello登录一个机器,需要先输入192.168.1.1的密码,再输入预登录的主机的密码。
3. 设置本地代理
ssh -D2247 admin@<remote_ip>
解释:
上述ssh命令的意义是将远端ip代理到本地的2247端口,然后使用chrome浏览器的SwitchyOmega 插件,对应填写就行。整体意思是把本地的请求使用2247端口走到服务器端,然后,当成remote_ip发出的请求,来对目的服务器来做访问。也称动态端口转发。
4. 设置远端端口映射到本地指定端口
- 建立本机独享隧道 将本地6666端口通过10.0.0.56映射到10.0.0.57的23端口
SSH -L 6666:10.0.0.57:23 -Nf 10.0.0.56
# -L 将本地6666端与远程服务器2的23端口建立映射关系
# -N 不执行命令或者脚本,否则会等待用户输入命令
# -f 不登录到主机,一般-Nf搭配使用即后台运行且不登录
- 共享隧道
SSH -g -L 5566:10.0.0.57:23 -Nf 10.0.0.56
# -g 共享5566端口;即别人访问我的端口也可以直接使用隧道。否则的话只能本机使用。
5. 设置本地端口映射到远端指定端口
sshpass -p<远端主机root密码> ssh -M 2333 -NfR 8080:localhost:80 -o "ServerAliveInterval 60" -o "ServerAliveCountMax 9999999999" <用户名>@远端主机ip
注意:
- 远端主机的/etc/ssh/sshd_config中需要配置: GatewayPorts yes, 否则,只会开启127.0.0.1的端口
- -M 选项: 在远端主机开启指定端口进行回显
- ServerAliveInterval 60: 第一个参数表示如果服务器(外网)没数据发来则过 60 秒客户端(内网)会发送一个空包到服务器,以保持 tcp 长连接,默认值为 0,表示不会发心跳包,所以这里设置为 60 秒。
- ServerAliveCountMax 9999999999: 第二个参数表示,如果服务器(内网)没有收到心跳包指定次数,就中断连接