목차

Linux SSH

Private Key 생성

ssh-keygen -t rsa -b 4096 -m pem -C "your_email@example.com"

서버의 ''~/.ssh/authorized_keys'' 에 파일추가

ssh-copy-id -f -i id_rsa.pub username@host

ssh-agent

exec ssh-agent /bin/bash
ssh-add ~/.ssh/id_dsa
chmod 600 ~/.ssh/id_rsa*

ssh-agent forwarding

SSH 접속 인사 텍스트

~/.ssh/config

접속 유지 Keep connection

혹은 명령행 옵션을 직접 줘도 됨

ssh  -o ServerAliveInterval=60 hostname

Text 파일 Gzip 압축 전송 : 다른 서버의 파일을 현재 서버로 전송

ssh 10.0.0.4 "cat /tmp/backup.sql | gzip -c1" | gunzip -c > backup.sql
 
# or
 
ssh 10.0.0.4 "gzip -c /tmp/backup.sql" |gunzip > backup.sql
# 압축을 풀 생각이 없다면 
ssh 10.0.0.4 "gzip -c /tmp/backup.sql" > backup.sql.gz

디렉토리/파일 압축전송 : 현재 서버의 파일을 다른 서버로 전송

sshpass

명령 실행 execute command

아래는 긴 명령을 ssh를 통해 실행하는 방법이다. 예제 자체는 jstat으로 GC 상황 모니터링하는 것.

ssh myhostname 'bash -s' <<'ENDSSH'
# commands...
ENDSSH

known_hosts 에 미리 호스트 추가

ssh-keyscan -t rsa host명 >> ~/.ssh/known_host
ssh-keyscan -t rsa -f host명들 이들어있는 파일명 >> ~/.ssh/known_host

no matching cipher found.

아래와 같은 오류 발생시..

no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael128-cbc,rijndael192-cbc,rijndael256-cbc,rijndael-cbc@lysator.liu.se

혹은

no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

~/.ssh/config 마지막에 다음과 같은 설정 추가(알고리즘은 알아서..)

Ciphers aes128-cbc,aes192-cbc,aes256-cbc
# 필요한 경우
KexAlgorithms +diffie-hellman-group1-sha1

# Host 를 명시해서 설정하는게 나음
Host 123.123.123.123
    KexAlgorithms +diffie-hellman-group1-sha1
    

혹은 명령행에 암호화 방식을 -c 옵션으로 직접 지정한다.

ssh -c aes128-cbc kwon37xi@xxx.xx.xx.xx

no match host key type found

Unable to negotiate with 192.168.1.1 port 22: no matching host key type found. Their offer: ssh-dss, ssh-rsa
HostkeyAlgorithms ssh-dss,ssh-rsa

SSH Pipe

SSH RSA private key 를 공유해도 괜찮은가?

참조