V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
decken
V2EX  ›  问与答

Linux 下有支持代理 ssh 协议的软件吗?

  •  
  •   decken · 2014-08-20 16:08:08 +08:00 · 1705 次点击
    这是一个创建于 3733 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前在内网环境,已经在有一台已连外网的Linux机器,搭建了squid,但是squid不能代理ssh协议。通过SSH连接远程的Linux服务器还需另找其他方法,我现在想找一款支持代理ssh协议的软件。

    我也尝试用ssh翻墙的方式建立socket代理,但是也不能通过代理连接远程服务器。

    求各位给一些解决办法
    15 条回复    2014-08-21 11:36:11 +08:00
    Kymair
        1
    Kymair  
       2014-08-20 16:28:09 +08:00
    没怎么听明白你的需求。
    Linux下proxychains这个软件可以让你的ssh走socks5的代理,例如
    proxychains ssh [email protected]
    DreaMQ
        2
    DreaMQ  
       2014-08-20 16:42:29 +08:00
    ETiV
        3
    ETiV  
       2014-08-20 16:56:02 +08:00   ❤️ 1
    在你内网机器上执行这么个命令:

    ssh -fNR :${REMOTE_PROXY_PORT}:localhost:${LOCAL_PORT} -p ${REMOTE_SSH_PORT} -i ${REMOTE_SSH_KEY_FILE} ${REMOTE_USER}@${REMOTE_IP}

    -p ${REMOTE_SSH_PORT} 如果公网机器的 sshd 端口不是22, 需要用这个来指定.
    -i ${REMOTE_SSH_KEY_FILE} 私钥文件路径, 可以免密码登录.

    当然你也可以建立一个 .ssh/config 配置, 这样 -p 和它后面的就都不用敲了, 直接写 host 别名即可.

    他会创建从 {远程主机:PROXY端口 -> 本地主机:端口} 的一个映射.

    默认的 sshd 配置, 这条命令会让公网机器只监听 127.0.0.1 的端口, 想要解开这个限制, 可以在 sshd_config 里加下面一行, 并重启公网服务器的 sshd:

    GatewayPorts yes
    # 还可以从 man sshd_config 里查到其他的参数, 使用 yes 是最简单的

    这条命令可以让公网那台机器反代任何发起这条命令的机器所在局域网的端口, 只需要把 localhost 那段改成目标机器的IP就行.

    另外, 如果你内网机器会时不时的换IP(电信经常这么干), 你还需要做一个 cronjob 去查看连接状态, 并且重连. 我不知道什么 supervisor 之类的会不会起作用, 你可以试试这个.
    Tink
        4
    Tink  
       2014-08-20 17:02:42 +08:00 via iPhone
    proxychains
    clino
        5
    clino  
       2014-08-20 17:03:30 +08:00
    socks 除了可以用 proxychains 还可以用 tsocks ,不过还是 proxychains 比较好用
    decken
        6
    decken  
    OP
       2014-08-20 17:05:06 +08:00
    @Kymair 简单来说就是我想借助这部能连外网的机器来进行上网,但是体验要和在这部机器上直接上网的体验差不多。
    目前是情况是不能在利用这部机器来ssh远程服务器
    webflier
        7
    webflier  
       2014-08-20 17:07:23 +08:00
    apt-get install connect-proxy
    clino
        8
    clino  
       2014-08-20 17:11:41 +08:00   ❤️ 1
    @decken 那就在这台机器上跑个shadowsocks server,本地跑个shadowsocks client,然后本地用 tsocks 或者 proxychains通过本地的 shadowsocks client来连就行了
    其实我现在就在这么用
    rrfeng
        9
    rrfeng  
       2014-08-20 17:11:57 +08:00   ❤️ 1
    ssh 走 tcp 协议,所以可以 tcp 代理都可以代理 ssh。

    socks 代理可以代理 ssh
    treo
        10
    treo  
       2014-08-20 17:49:40 +08:00
    请先搞清楚http ssh tcp socks socket。。
    decken
        11
    decken  
    OP
       2014-08-21 10:26:17 +08:00
    @clino 通过你说的已经解决了这个问题,非常感谢。你用proxychains是为了切换代理吗?
    decken
        12
    decken  
    OP
       2014-08-21 10:28:38 +08:00
    @rrfeng 我这里测试通过ssh方式建立的sock代理不能走ssh的流量,但是通过shadowsocks建立的代理可以正常使用ssh。
    clino
        13
    clino  
       2014-08-21 10:56:02 +08:00
    @decken 我有两个shadowsocks,一个走内部跳板机,一个走外部翻墙vps,用tsocks或者proxychains都可以配置为针对不同的ip自动走不同的socks代理,很方便的
    decken
        14
    decken  
    OP
       2014-08-21 11:03:47 +08:00
    @clino proxychains可以是不是可以配置为先连跳板,然后再连翻墙vps
    clino
        15
    clino  
       2014-08-21 11:36:11 +08:00
    @decken 我还没这么用过,不过应该可以吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2861 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:24 · PVG 10:24 · LAX 18:24 · JFK 21:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.