안전하지 않은 위치 (예 : 공용 Wi-Fi)에서 인터넷을 사용할 때마다 ssh -D port host
트래픽을 감지 할 수 없도록 ssh 터널 ( )을 사용하고 싶습니다. 불행히도 프록시를 지정하는 방법을 제공하지 않는 많은 응용 프로그램이있는 것 같습니다 (플래시가 주요 예입니다).
내 컴퓨터의 모든 네트워크 트래픽에 터널을 사용할 수있는 방법이 있어야한다고 생각 하지만 어떻게 해야하는지 완전히 모릅니다. 도움을 주시면 감사하겠습니다.
안전하지 않은 위치 (예 : 공용 Wi-Fi)에서 인터넷을 사용할 때마다 ssh -D port host
트래픽을 감지 할 수 없도록 ssh 터널 ( )을 사용하고 싶습니다. 불행히도 프록시를 지정하는 방법을 제공하지 않는 많은 응용 프로그램이있는 것 같습니다 (플래시가 주요 예입니다).
내 컴퓨터의 모든 네트워크 트래픽에 터널을 사용할 수있는 방법이 있어야한다고 생각 하지만 어떻게 해야하는지 완전히 모릅니다. 도움을 주시면 감사하겠습니다.
답변:
당신이 원하는 것을하기 위해, 나는 sshuttle을 추천 합니다 .
당신은 이것을 다음과 같이 사용합니다 :
./sshuttle -r username@sshserver 0.0.0.0/0 -vv
모든 TCP 트래픽을 자동으로 터널링합니다. --dns
DNS 트래픽도 터널링 하도록 인수를 추가 할 수 있습니다 . 원격 서버에는 Python 만 설치하면됩니다.
특정 프로그램 만 터널링하려면 프록시 체인 을 권장 합니다 .
일단 설치되면 다음과 같이 ssh socks 프록시를 시작하십시오.
ssh -fND 127.0.0.1:<local port> username@sshserver
<local port>에서 "SOCKS"프록시 청취가 시작됩니다.
그런 다음 <local port>와 동일한 포트를 가리 키도록 /etc/proxychains.conf를 편집하십시오.
마지막으로 프록시를 원하는 프로그램을 시작하십시오.
proxychains <program name>
그냥 작동해야합니다. 그러나 일부 프로그램은 프록시 체인 작업에 문제가 있습니다. 또한 Firefox에서는 about : config에서 추가 항목을 변경하여 프록시를 우회하지 않고 프록시를 통해 DNS 조회를 수행하도록해야합니다.
추가 참고 사항으로 웹 브라우저에서. 양말 프록시를 지원하는 경우 위에서 언급 한 ssh 터널을 사용하기 위해 추가 작업을 수행 할 필요가 없습니다. SOCKS 프록시 서버에 127.0.0.1을 입력하고 프록시 포트에 <local port>를 입력하십시오.
3/29/16 수정
이 게시물에 여전히 일부 의견이 게시되어 있기 때문에 업데이트 할 것이라고 생각했습니다. 프록시 체인은 여전히 대부분의 Linux 저장소에 있으며 여전히 Linux에서 작동합니다. 그러나이 프로젝트는 효과적으로 중단되어 OSX에서 작동하지 않습니다. Linux 또는 OSX의 경우 여전히 유지 관리 포크로 업그레이드하는 것이 좋습니다. proxychains-ng : https://github.com/rofl0r/proxychains-ng
Linux 및 OSX에서 작업하는 것 외에도 컴파일하기 쉽고 DNS 터널링에 대한 지원이 훨씬 뛰어납니다.
또한 redsocks 인 다른 옵션을 언급해야합니다. 그것은 프록시 체인 (-ng)과 유사하게 작동하며 또한 dist 저장소에 있습니다 : https://github.com/darkk/redsocks
sshuttle -r root@host -x host 0/0
man ssh
정확히 이것의 예를 제공합니다. ssh 기반 VPN :
SSH-BASED VIRTUAL PRIVATE NETWORKS
ssh contains support for Virtual Private Network (VPN) tunnelling using
the tun(4) network pseudo-device, allowing two networks to be joined
securely. The sshd_config(5) configuration option PermitTunnel controls
whether the server supports this, and at what level (layer 2 or 3 traf-
fic).
The following example would connect client network 10.0.50.0/24 with
remote network 10.0.99.0/24, provided that the SSH server running on the
gateway to the remote network, at 192.168.1.15, allows it:
# ssh -f -w 0:1 192.168.1.15 true
# ifconfig tun0 10.0.50.1 10.0.99.1 netmask 255.255.255.252
~~ 저격 ~~
Since a SSH-based setup entails a fair amount of overhead, it may be more
suited to temporary setups, such as for wireless VPNs. More permanent
VPNs are better provided by tools such as ipsecctl(8) and isakmpd(8).
새 인터페이스를 만든 후에는 기본 경로로 설정해야합니다. 다른 질문입니다.
ssh에서 "Tunnel"옵션을 찾으십시오. 그러면 IP 주소를 할당 할 수있는 터널 장치가 생성되고 해당 터널을 사용하도록 기본 경로가 변경됩니다.
시스템 전체의 SOCKS5 프록시를 통해 모든 TCP 및 선택적으로 UDP를 전달할 수있는 소프트웨어를 개발했습니다.
http://code.google.com/p/badvpn/wiki/tun2socks
LAN에있는 컴퓨터의 모든 연결을 전달하기 위해 라우터에 설치할 수도 있습니다.
SSH 기반 가상 개인 네트워크 ssh에는 tun (4) 네트워크 의사 장치를 사용하여 VPN (가상 사설망) 터널링이 지원되므로 두 개의 네트워크를 안전하게 연결할 수 있습니다. sshd_config (5) 구성 옵션 PermitTunnel은 서버가이를 지원하는지 여부와 레벨 (계층 2 또는 3 트래픽)을 제어합니다.
The following example would connect client network 10.0.50.0/24 with
remote network 10.0.99.0/24 using a point-to-point connection from
10.1.1.1 to 10.1.1.2, provided that the SSH server running on the gateway
to the remote network, at 192.168.1.15, allows it.
On the client:
# ssh -f -w 0:1 192.168.1.15 true
# ifconfig tun0 10.1.1.1 10.1.1.2 netmask 255.255.255.252
# route add 10.0.99.0/24 10.1.1.2
On the server:
# ifconfig tun1 10.1.1.2 10.1.1.1 netmask 255.255.255.252
# route add 10.0.50.0/24 10.1.1.1
Client access may be more finely tuned via the /root/.ssh/authorized_keys
file (see below) and the PermitRootLogin server option. The following
entry would permit connections on tun(4) device 1 from user “jane” and on
tun device 2 from user “john”, if PermitRootLogin is set to
“forced-commands-only”:
tunnel="1",command="sh /etc/netstart tun1" ssh-rsa ... jane
tunnel="2",command="sh /etc/netstart tun2" ssh-rsa ... john
Since an SSH-based setup entails a fair amount of overhead, it may be
more suited to temporary setups, such as for wireless VPNs. More perma‐
nent VPNs are better provided by tools such as ipsecctl(8) and
isakmpd(8).
(ssh -D 포트 호스트)는 트래픽이 스니핑되지 않도록 100 % 안전한 방법이 아니라는 것을 확인하고 싶었습니다. 세션에 암호화를 적어도 추가하기 때문에 (ssh -D -c 복어 포트 호스트)를 추가하는 것이 더 좋습니다. 추가 할 수있는 옵션이 더 있지만 터미널이나 Google에 "man ssh"를 입력하면 전체 목록을 작성하기가 쉽습니다.
내가 생각하는 옵션은 VPN (Virtual Private Network)을 설정하는 것입니다.
자신의 VPN을 설정하기 전에이 기사를 살펴보고 두 가지 ( SSH vs. VPN ) 또는 요약 된 버전 간의 차이점을 이해 하십시오. VPN 경로를 사용하기로 결정한 경우 OpenVPN , 무료 및 많은 설명서 및 지원을 권장합니다 .
ssh -2 -C -D [...]
(SSH2를 강제 하고 압축을 사용하여) 원하는 것을 제거하십시오 -c
. 내 시스템의 man ssh
SSH2의 암호 목록에 따르면 기본값은 aes128-cbc,3des-cbc,blowfish-cbc,[etc]
입니다. 내 요점은, 요청 -c blowfish
하면 SSH2보다 훨씬 안전하지 않은 SSH1로 끝날 수 있습니다.
다음 예를 사용하십시오.
원격 호스트에서 로컬 호스트의 8888로 포트 80을 전달
ssh -fnN -L8888 : localhost : 80 사용자 @ 서버
이 옵션을 사용하여 원격 호스트에서만 사용할 수있는 서비스에 액세스하십시오
원격 호스트의 로컬 호스트에서 8888로 포트 80 전달
ssh -fnN -R8888 : localhost : 80 사용자 @ 서버
이를 통해 사용자가 웹 서버 또는 기타 서비스에 액세스 할 수 있습니다.
건배! :)