私はここで何をしているのか本当に分かりません。あなたが私を助けることができるならば、それを覚えておいてください!
プロキシ経由で仮想サーバーに接続しようとしていますが、接続できず、ハングします。これはプロキシを経由していないためだと思います。
私は自宅でまったく同じことを試みましたが、完全に機能します。ターミナルを使用して接続するOSXを実行しています。
SSHを使用してプロキシを経由する方法を教えてください。
リチャード・クリステンセンの答えをワンライナーとして、ファイル編集を必要としない方法は次のとおりです(自分の設定で大文字に置き換えてください。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
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
-o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p"
sshオプションを使用して、OSXのsocks5プロキシ経由で接続します。
@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は完璧な仕事をすることができます
$ 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
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を使用して問題を解決するには:
ncat.exe
を現在のディレクトリに抽出しました。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をサポートしないことに注意してください。
より良い解決策:
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
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
を指定できます
ProxyCommand nc -proxy xxx.com:8080 %h %p
-X connect
を削除し、代わりに-proxy
を使用します。
私のために働いた。
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
と競合するため、pacman
はopenbsd-netcat
を削除後に削除しました)。最初のビューで、それぞれのマニュアルページを確認すると、openbsd-netcat
とUbuntu netcat
は、特にオプション-X
と-x
に関して非常に似ているようです。これで、問題なく接続できました。
私の場合、途中でジャンプホストまたは要塞ホストがあり、これらの要塞ノードの署名がknown_hostsファイルにインポートされてから変更されたため、次のファイルからそれらのエントリ/行を削除するだけでした。
/Users/a.abdi-kelishami/.ssh/known_hosts
上記のファイルから、要塞ホストを参照する行を削除します。