NC 없이 서버를 통해 자동 SSH 호핑을 설정하려고 합니다.
이는 명령줄에서 실행할 수 있습니다.
ssh -A gateway ssh steve@target
(SSH 에이전트에 공개 키를 추가했습니다.)
그러나 이를 ~/.ssh/config에 추가하면 다음이 수행되지 않습니다.
Host target
User steveb
ProxyCommand ssh -A gateway ssh steve@targetip
$ ssh target
Pseudo-terminal will not be allocated because stdin is not a terminal.
^CKilled by signal 2.
문제를 강제로 해결하려고 하는 것은 -t
재미있지만 도움이 되지 않습니다.
ProxyCommand ssh -A -t gateway ssh steve@targetip
$ ssh target
Pseudo-terminal will not be allocated because stdin is not a terminal.
Pseudo-terminal will not be allocated because stdin is not a terminal.
^CKilled by signal 2.
더 -t
? 안좋다.
ProxyCommand ssh -A -t -t gateway ssh steve@targetip
$ ssh target
tcgetattr: Inappropriate ioctl for device
^CKilled by signal 2.
가능합니까? 대부분의 튜토리얼(예:http://www.arrfab.net/blog/?p=246)을 권장합니다 nc
.
답변1
netcat이 없는 SSH 프록시 명령
ProxyCommand는 호스트에 간접적으로만 액세스할 수 있는 경우에 유용합니다. netcat의 경우 비교적 진보적입니다.
ProxyCommand ssh {gw} netcat -w 1 {host} 22
여기서 {gw} 및 {host}는 게이트웨이 및 호스트에 대한 자리 표시자입니다.
그러나 게이트웨이에 netcat이 설치되지 않은 경우에도 가능합니다.
ProxyCommand ssh {gw} 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'
/dev/tcp는 표준 bash에 내장된 기능입니다. 이러한 파일은 존재하지 않습니다. Bash에 이 기능이 내장되어 있는지 확인하려면 다음을 실행하세요.
cat < /dev/tcp/google.com/80
...게이트웨이에서요.
Bash를 사용하고 있는지 확인하려면 다음을 사용하세요.
ProxyCommand ssh {gw} "/bin/bash -c 'exec 3<>/dev/tcp/{host}/22; cat <&3 & cat >&3;kill $!'"
ControlMaster에서도 작동합니다.
(배경 고양이를 정리하기 위해 Kill을 포함하도록 10월 22일 업데이트) (자리 표시자를 더 명확하게 만들고 /dev/tcp를 설명하기 위해 2011년 3월 3일 업데이트)
Roland Schulz에게 100% 크레딧을 제공합니다. 출처는 다음과 같습니다.
http://www.rschulz.eu/2008/09/ssh-proxycommand-without-netcat.html
더 유용한 정보를 보려면 댓글을 확인하세요.
자세한 내용은 다음과 같습니다.
http://www.linuxjournal.com/content/tech-tip-tcpip-access-using-bash
http://securityreliks.securegossip.com/2010/08/enabling-devtcp-on-backtrack-4r1ubuntu/
고쳐 쓰다: 뭔가 새로운 것 같아요표시
다음 줄이 포함된 ~/.ssh/config의 ProxyCommand를 참조하세요.
ProxyCommand ssh gateway nc localhost %p
마르코는 이렇게 말했습니다.
최신 버전의 OpenSSH를 사용하는 경우 netcat이 필요하지 않습니다. nc localhost %p를 -W localhost:%p로 바꿀 수 있습니다.
결과는 다음과 같습니다.
ProxyCommand ssh gateway -W localhost:%p
답변2
작은 T가 아닌 큰 T.
-T' Disable pseudo-tty allocation.
-t' Force pseudo-tty allocation.
내 스크립트는 이 메시지를 반환했지만 지금은 그렇지 않습니다.
/usr/bin/ssh -T -q -i $HOME/.ssh/one_command other_system
authorized_key
other_system에서 다음 명령을 실행하도록 사용합니다 .
from="my.mydomain.com",command="bin/remotely-run" ssh-rsa ...
답변3
시도 해봐:
ProxyCommand ssh -A -t gateway ssh -t steve@targetip
답변4
다음 기술을 시도해 볼 수 있습니다. 먼저 SSH를 통해 server1에 연결한 다음 SSH를 통해 server2에 연결합니다.
$ ssh -t user1@server1 ssh -t user2@server2
이와 같은 것이 나에게 효과적입니다.