web-dev-qa-db-ja.com

プロキシを介してSSHで接続する

私はここで何をしているのか本当に分かりません。あなたが私を助けることができるならば、それを覚えておいてください!

プロキシ経由で仮想サーバーに接続しようとしていますが、接続できず、ハングします。これはプロキシを経由していないためだと思います。

私は自宅でまったく同じことを試みましたが、完全に機能します。ターミナルを使用して接続するOSXを実行しています。

SSHを使用してプロキシを経由する方法を教えてください。

41
bencarter78

リチャード・クリステンセンの答えをワンライナーとして、ファイル編集を必要としない方法は次のとおりです(自分の設定で大文字に置き換えてください。PROXYPORTは頻繁に80です)。

 ssh USER@FINAL_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p"

Scpでも同じ-o ...オプションを使用できます。 https://superuser.com/a/752621/39364 を参照してください

OS Xでこれを取得する場合:

 nc: invalid option -- X
 Try `nc --help' for more information.

誤ってnetbrewの自作バ​​ージョンを使用している可能性があります(which -a ncコマンドを実行することで確認できます--/usr/bin/ncを最初にリストする必要があります)。 2つある場合、回避策の1つは、ProxyCommand=/usr/bin/nc ...のように、希望するncへのフルパスを指定することです。

CentOSの場合、ncにはinvalid option --Xと同じ問題があります。 connect-proxyは代替であり、yumを使用して簡単にインストールでき、動作します-

ssh -o ProxyCommand="connect-proxy -S PROXYHOST:PROXYPORT %h %p" USER@FINAL_DEST
55
rogerdpack

SSHプロキシ接続を頻繁に使用する場合、毎回それらをパラメーターとして渡す必要はありません。次の行を~/.ssh/configに追加できます

Host foobar.example.com
    ProxyCommand          nc -X connect -x proxyhost:proxyport %h %p
    ServerAliveInterval   10

その後、使用する接続する

ssh foobar.example.com

ソース:

http://www.perkin.org.uk/posts/ssh-via-http-proxy-in-osx.html

25

-o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p" sshオプションを使用して、OSXのsocks5プロキシ経由で接続します。

19
Maxim K.

@rogerdpack for Windowsプラットフォームでは、-X(http_proxy)を使用してnc.exeを見つけるのは非常に困難ですが、ncをncatに置き換えることができることがわかりました。次の完全な例です。

Host github.com
     HostName github.com
         #ProxyCommand nc -X connect -x 127.0.0.1:1080 %h %p
         ProxyCommand ncat --proxy 127.0.0.1:1080 %h %p
     User git
     Port 22
     IdentityFile D:\Users\Administrator\.ssh\github_key

--proxyを使用したncatは完璧な仕事をすることができます

9
shoaly
$ which nc
/bin/nc

$ rpm -qf /bin/nc
nmap-ncat-7.40-7.fc26.x86_64

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> %h %p" USER@Host

$ ssh -o "ProxyCommand nc --proxy <addr[:port]> --proxy-type <type> --proxy-auth <auth> %h %p" USER@Host
2
zhigang

Windowsでは、@ shoalyパラメーターは完全に機能しませんでした。私はこのエラーを受け取っていました:

NCAT DEBUG: Proxy returned status code 501.
Ncat: Proxy returned status code 501.
ssh_exchange_identification: Connection closed by remote Host

リモートサーバーにSSH接続したかったため、ネットワークでSSHポートが閉じられていました。私は2つの解決策を見つけましたが、2番目の方が優れています。

  • Ncatを使用して問題を解決するには:

    1. Tor Browser をダウンロードし、実行して接続を待機しました。
    2. Nmap distribution から Ncat を取得し、ncat.exeを現在のディレクトリに抽出しました。
    3. Git Bash でProxyCommandとしてNcatを使用するSSHに--proxy-type socks4パラメーターを追加して:

      ssh -o "ProxyCommand=./ncat --proxy-type socks4 --proxy 127.0.0.1:9150 %h %p" USERNAME@REMOTESERVER
      

      Ncatのこの実装はsocks5をサポートしないことに注意してください。

  • より良い解決策

    1. 前の手順1を実行します。
    2. Git BashでProxyCommandとしてconnect.cを使用するSSH:

      ssh -o "ProxyCommand=connect -a none -S 127.0.0.1:9150 %h %p"
      

      Connect.cはソックスバージョン4/4a/5をサポートしていることに注意してください。

Sshを使用してgitコマンドでプロキシを使用するには(たとえば、GitHubを使用している場合)-Git BashをC:\Program Files\Git\にインストールしたと仮定して-~/.ssh/configを開き、このエントリを追加します。

Host github.com
    user git
    hostname github.com
    port 22
    proxycommand "/c/Program Files/Git/mingw64/bin/connect.exe" -a none -S 127.0.0.1:9150 %h %p
2
Hamid Rohani

proxychains ssh user@Hostを使用します。 proxychains-ngから( https://github.com/rofl0r/proxychains-ng を参照)。
デフォルトでは、127.0.0.1:9050でsocks4プロキシを使用しますが、confファイル/etc/proxychains.confで変更するか、別のconfファイルproxychains -f custom.confを指定できます

1
Riccardo Pozzi
ProxyCommand nc -proxy xxx.com:8080 %h %p

-X connectを削除し、代わりに-proxyを使用します。

私のために働いた。

1
Robin Mathews

Ubuntuの下で.ssh/config(適切なコマンドラインパラメーターに置き換えることができます)で次の行を使用していました

Host remhost
  HostName      my.Host.com
  User          myuser
  ProxyCommand  nc -v -X 5 -x proxy-ip:1080 %h %p 2> ssh-err.log
  ServerAliveInterval 30
  ForwardX11 yes

Msys2で使用する場合、gnu-netcatをインストールした後、ファイルssh-err.logはオプション-Xが存在しないことを示しました。 nc --helpはそれを確認し、プロキシを処理する代替オプションがないことを示しているようです。

そこでopenbsd-netcatをインストールしました(gnu-netcatと競合するため、pacmanopenbsd-netcatを削除後に削除しました)。最初のビューで、それぞれのマニュアルページを確認すると、openbsd-netcatとUbuntu netcatは、特にオプション-X-xに関して非常に似ているようです。これで、問題なく接続できました。

0
sancho.s

私の場合、途中でジャンプホストまたは要塞ホストがあり、これらの要塞ノードの署名がknown_hostsファイルにインポートされてから変更されたため、次のファイルからそれらのエントリ/行を削除するだけでした。

/Users/a.abdi-kelishami/.ssh/known_hosts

上記のファイルから、要塞ホストを参照する行を削除します。

0
cyberPrivacy