今天工作环境从windows换成了ubuntu,开发的时候需要连上线上主机,但是需要通过跳板机连接。如果只是连接的话可以还是容易搞定的,但是遇到了一个文件传输的问题,由于有了跳板机,需要搞两次,有点烦,于是网上搜资料,最后终于搞定了。(我公司环境是通过密钥连接的,密码连接应该也类似)

在~/.ssh下新建一个文件config,输入以下内容:

Host gateway
  HostName 192.168.0.1
  Port 8888
  User root
  ProxyCommand none
  IdentityFile ~/.ssh/id_rsa
  PasswordAuthentication no

Host product
  HostName 192.168.0.2
  Port 8888
  User root
  ProxyCommand ssh -q -W %h:%p gateway
  IdentityFile ~/.ssh/id_rsa_gateway
  PasswordAuthentication no

其中各行意义如下:

  • Host 自己为服务器取的别名
  • HostName 服务器ip
  • Port 连接端口
  • User 用户
  • ProxyCommand 代理命令
  • IdentityFile 密钥文件,默认为~/.ssh/id_rsa
  • PasswordAuthentication 用户密码

各个参数大家在使用的时候改成自己环境的真实参数就好了。

主要是要注意product下IdentityFile的密钥文件是跳板机用来连上线上主机的文件,跟本地主机的密钥文件是不一样的,我就是一直困在这个地方搞不定,运行ssh product后,一直叫我输入线上主机密码,后面才想明白,所以记录下来希望大家遇到这个问题能及时解决。文件传输的时候只需要把原来的主机名换成config文件里的Host就可以了。

如果想配置全局设置,可以修改/etc/ssh/ssh_config文件,比如关闭每次连接时检查主机公钥,可以在/etc/ssh/ssh_config文件中加入这一行:StrictHostKeyChecking no

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐