Ligar ao SSH através de um 'proxy'
7 answers
Aqui está como fazer a resposta de Richard Christensen como um liner, sem necessidade de edição de arquivos (substituir capitalizado com suas próprias configurações, PROXYPORT é frequentemente 80):
ssh USER@FINAL_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p"
Também pode usar a mesma opção -o ...
para scp, ver https://superuser.com/a/752621/39364
Se receber isto no OS X:
nc: invalid option -- X
Try `nc --help' for more information.
Pode ser que esteja a usar acidentalmente a versão homebrew do netcat (pode ver fazendo um comando which -a nc
--/usr/bin/nc
deve ser listado em primeiro lugar). Se existem dois, então um workaround é especificar o caminho completo para o nc que você deseja, como ProxyCommand=/usr/bin/nc
...
Para CentOS nc
tem o mesmo problema de invalid option --X
. connect-proxy
é uma alternativa, fácil de instalar usando yum
e funciona --
ssh -o ProxyCommand="connect-proxy -S PROXYHOST:PROXYPORT %h %p" USER@FINAL_DEST
Se a sua ligação por 'proxy' SSH vai ser usada frequentemente, não tem de passá-las como parâmetros de cada vez. você pode adicionar as seguintes linhas a ~/.ssh/config
Host foobar.example.com
ProxyCommand nc -X connect -x proxyhost:proxyport %h %p
ServerAliveInterval 10
Então para ligar use
ssh foobar.example.com
Fonte:
Http://www.perkin.org.uk/posts/ssh-via-http-proxy-in-osx.html
Eu uso a opção -o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p"
SSH para ligar através do 'proxy' socks5 no OSX.
@rogerdpack para a plataforma windows é realmente difícil encontrar um nc.exe with-X( http_ proxy), no entanto, descobri que nc pode ser substituído por ncat, exemplo completo como se segue:
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
E ncat com --proxy pode fazer um trabalho perfeito
$ 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
No meu caso, uma vez que eu tinha uma máquina de salto ou de Bastion a caminho, e porque as assinaturas nestes nós de bastion tinham mudado desde que foram importadas para o ficheiro known_ hosts, eu só precisava de apagar essas entradas / linhas do seguinte ficheiro:
/Users/a.abdi-kelishami/.ssh/known_hosts
De cima do ficheiro, apaga as linhas que se referem às máquinas do bastion.
Estava a usar as seguintes linhas no meu .ssh/config
(que podem ser substituídas por parâmetros adequados da linha de comandos) no Ubuntu
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
Ao usá-lo com o Msys2, depois de instalar gnu-netcat
, o ficheiro ssh-err.log
mostrou que a opção -X
não existe. nc --help
confirmou isso, e pareceu mostrar que não há opção alternativa para lidar com proxies.
openbsd-netcat
(pacman
removido gnu-netcat
Depois de perguntar, uma vez que entrou em conflito com openbsd-netcat
). Numa primeira vista, e verificando a respectiva as páginas man, openbsd-netcat
e Ubuntu netcat
parecem muito semelhantes, em particular no que diz respeito às opções -X
e -x
.
Com isto, não tive problemas.