(요즘 참여하는 프로젝트에 얽힌) 세 가지 이야기.

1. 먼저 ssh 빨리 접속하기 (접속지연 줄이기)

나의 우분투 데스크탑에서 ssh를 사용하여 리눅스 서버에 접속하는데 접속이 좀 느리다. 네트워크 연결은 문제가 없는데 키 확인을 한 후에 로긴 프롬프트가 뜨기까지 대충 5초는 걸리는 것 같다. 게으른 성격 때문에 웬만하면 그냥 참고 쓰겠는데... 작업 성격이 다섯대의 서버에 로그인 하는 대신, 클라이언트에 위치한 배치 명령만 차례로 던져가며 작업하는 상황이라 반복되는 암호 입력 지연이 좀 거슬린다.

'-v' 옵션을 사용하여 확인해보니, "Unspecified GSS failure. ..." 뭐 이런 이야기가 나온다. (나오고 좀 멈춰 있는다.) 오호라... 관련 설정을 ~/.ssh/config에 해주는 것으로 일단 상황 종료.

뭐? 그런 상황이면 "서로 믿고 사는 사회" 만들면 되지 왜 매번 암호를 입력하냐고? 글쎄... 이상하게 그게 더 맘 편하다

아차차! 설정을 빼먹었네.

GSSAPIAuthentication no

참고로, 대체로 이런 현상은 인증 모듈에 의하여 일어나는데, 예전에는 가장 흔한 경우가 DNS 역추적에 명시적으로 빨리 실패하지 못하고 (또는 성공하지 못하고) 찾아보겠다고 헤메는 경우였다.

2. pseudo-tty 살리기

단순히 "ssh user@remote.host" 형태의 명령으로 원격지에 로그인 하는 경우라면, 명령을 수행하는 창, 화면, tty를 이어받아 원격 쉘이 실행된다. 그런데, "ssh user@remote.host top" 이라고 명령해보면,

$ ssh user@remote.host top
user@remote.host's password: 
TERM environment variable not set.

이렇게 화면 기반의 프로그램은 정상적으로 실행되지 않는다. 그런데, '-t' 옵션을 사용하면 원하는 일을 할 수 있다. 원격 로긴 후 항상 같은 화면 기반 프로그램을 띄워야 하는 상황이라면 유용하다.

3. ssh로 웹필터 피하기 (SOCKS proxy)

망할, 점점 상황은 나빠지고 있다. 윈도용으로만 존재하는 특정 네트워크 클라이언트를 설치해야만 네트워크 접속이 되는 환경. 예외처리로 네트워크에는 참여했으나 결국, 웹 접속은 허용되지 않았다. 그러나 얼마나 다행인가? 우리에겐 ssh가 있으니.

ssh -D8080 -fqCN user@proxy.host

위의 명령을 이용하면 일반적인 ssh 서버인 proxy.host를 웹 필터 우회를 위한 대리자로써 사용할 수 있다. -C 명령은 압축을 사용하기 위한 옵션이고 -f는 접속이 되면 프로세스를 백그라운드로 돌리기 위한 옵션이다.

다음과 같은 파이어폭스 설정을 해주면 우회로 설정 끝.

network.proxy.no_proxies_on : localhost, 127.0.0.1, 192.168.10.0/24, .localdomain
network.proxy.socks : localhost
network.proxy.socks_port : 8080
network.proxy.socks.remote_dns : true
network.proxy.socks_version : 5
network.proxy.type : 1

웹 필터 회피를 위한 경우, 또는 누군가 나의 웹생활을 훔쳐보고 있다는 느낌을 지울 수 없다면... :-)