SSH 命令

少于 1 分钟读完

ssh 端口转发,agent转发,非常实用的功能,前者可用于在目标主机没有开放端口时通过本机访问目标主机端口,后者可以通过中间主机进行ssh,或scp等操作,还有ssh config文件的简单介绍

SSH port forward

在本机无法访问10.1.1.2368161端口,但是10.1.1.122可以访问其端口的情况下,通过本机8080端口访问10.1.1.2368161端口

ssh -l timothy 10.1.1.122 -L 8080:10.1.1.236:8161
  • timothy 用户名
  • 10.1.1.122 目标主机地址,或用于中间跳转的主机地址
  • 8080 本机端口
  • 10.1.1.236 目标主机地址
  • 8161 目标主机端口

SSH agent forward

需要多次ssh登陆操作,例如,当前已经通过ssh登陆到10.1.1.166,然后需要通过scp拷贝文件至10.1.1.225

  1. 首先,检查 ssh agent ssh-add -L
  2. 如果第一步显示The agent has no identities. 则需要执行ssh-add -k

    这一步可能需要设置密码

    另一种方式,可以在~/.ssh/config文件中设置ForwardAgent yes, 如果使用此方式,则在ssh时必须使用config文件中Host指定的路径,具体操作请看下一章节

  3. 在登陆到10.1.1.166时,添加-A参数

    可以使用-v参数启动debug模式检查这句话debug1: Requesting authentication agent forwarding.

此时就可以在10.1.1.166上scp文件或ssh登陆至10.1.1.225, 请注意不要在10.1.1.166上切换用户,否则ssh agent forward会失效。

SSH config 文件

简单例子:

Host testserver
    HostName 10.1.1.122
    ForwardAgent yes
    User timothy

使用:

ssh testserver

注意如果使用配置文件启动ssh agent forward,则必须使用Host指定的路径,如果使用ssh timothy@10.1.1.122则不会自动开启ssh agent forward