ssh -N -L 3307:127.0.0.1:3306 <username>@<ssh-server-ip>
로컬 연결만 가능하도록 127.0.0.1 로 binding 된 MySQL 서버에 원격에서 접속하고 싶을 때, 해당 서버에 ssh 권한이 있다면 위의 명령을 통해 ssh 터널을 구성한 후 원격에서 3307로 접속하면 된다.
ssh -N -L 3307:127.0.0.1:3306 <username>@<ssh-server-ip>
로컬 연결만 가능하도록 127.0.0.1 로 binding 된 MySQL 서버에 원격에서 접속하고 싶을 때, 해당 서버에 ssh 권한이 있다면 위의 명령을 통해 ssh 터널을 구성한 후 원격에서 3307로 접속하면 된다.
ssh 서버 A를 거쳐 ssh 서버 B를 접속하고 싶다면 다음과 같이 ~/.ssh/config에 ProxyJump 를 쓰면 ssh b.dasomoli.org 명령으로 바로 접근하는 것처럼 쓸 수 있다.
Host a.dasomoli.org 11.22.33.44
Hostname 11.22.33.44
User dasomoli
IdentityFile ~/.ssh/a.dasomoli.org.pem
Host b.dasomoli.org 11.22.33.55
Hostname 11.22.33.55
User dasomoli
IdentityFile ~/.ssh/b.dasomoli.org.pem
ProxyJump dasomoli@a.dasomoli.org
~/.ssh/config 파일 안에 hostname을 지정한다면, 그 뒤에 IP 주소를 함께 지정하면 hostname이나 IP 둘 중 어느 하나로 접속해도 같은 설정이 적용된다. 항목을 여러개 만들 필요 없다. 공백으로 구분하면 다 같이 적용된다. 예를 들면 다음과 같다.
Host nas.dasomoli.org 112.145.250.152 192.168.0.204
HostName nas.dasomoli.org
User dasomoli
Port 2048
IdentityFile ~/.ssh/id_rsa_dasomoli_nas
sudo apt-get install fail2ban
sudo systemctl enable fail2ban.service
/etc/fail2ban/ 아래에 설정 파일이 있다. jail.d/ 아래 파일을 추가/수정.
ssh 접속할 때마다 password 치기가 귀찮다…
클라이언트에서 키 생성
$ ssh-keygen -t rsa -N '' -q -f ~/.ssh/id_rsa
접속하려는 서버로 공개키 복사.
$ ssh-copy-id <account>@<server hostname>
위의 복사는 아래와 동등하다. 위 명령을 했다면 아래를 할 필요는 없음.
$ scp ~/.ssh/id_rsa.pub <account>@<server hostname>:.ssh/authorized_keys
예를 들면 다음과 같이 한다.
ssh-keygen -t rsa -b 4096 -q -N '' -f ~/.ssh/id_rsa_dasomoli_nas
ssh-copy-id -i ~/.ssh/id_rsa_dasomoli_nas.pub dasomoli@nas.dasomoli.org
OpenSSH가 7.0이상이면, 요 키 교환 알고리즘이 기본으로 켜져 있지 않아서 나는 문제인데, 다음과 같은 방법으로 해결 가능하다.
이걸 명령 줄 때마다 하긴 귀찮으니까 ~/.ssh/config 파일 안에 다음 내용을 추가하면 된다.
일전에 OMAPpedia 에 나와 있다고 쓴 적이 있었는데, 그 글에서 다른 이슈들에 묻혀서 잘 안보이길래 아예 다른 글로 하나 빼서 쓴다.
가끔 ssh 를 Proxy 환경에서 사용해야 할 일이 있다. 이럴 때는 corkscrew 를 설치하고 ~/.ssh/config 안에 다음과 같이 설정하면 된다.
ProxyCommand /usr/local/bin/corkscrew <Proxy URL or IP> <Proxy Port> %h %p