Skip to main content

ssh 사용법


ssh agent 실행

eval "$(ssh-agent -s)"
.zshrc
plugins=(
ssh-agent
)

ssh 설정

키 생성

ssh-keygen -t ed25519 -N "" -C "[email protected]" -f <path>
ssh-keygen -t rsa -b 2048 -N "" -C "[email protected]" -f <path>

ssh 키는 기본적으로 ~/.ssh 디렉토리에 저장하고, 권한은 0600으로 설정합니다.

warning

파일 접근 권한은 로컬과 원격 모두 설정되어 있어야 합니다.

ssh-add ~/.ssh/<private>
ssh-copy-id -i ~/.ssh/<public> [<flag>] <user>@<host>
  • <flag>
    • -p <port>

config

~/.ssh/config 또는 /etc/ssh/ssh_config 파일에 아래 설정을 추가하여 ssh 커맨드를 사용할 때 필요한 옵션을 미리 설정할 수 있습니다.

# 전역 설정
IdentityFile <path>

# 호스트 별 설정
Host <alias>
HostName <host>
User <user>
PreferredAuthentications publickey
IdentityFile <path>
AddKeysToAgent yes

ssh로 원격 서버 접속

ssh <flag> <user>@<host>

ssh Tunnel

/etc/ssh/sshd_config
AllowTcpForwarding yes
PermitTunnel yes
ssh -f -N \
-L <localPort>:<host>:<port> \
-p <tunnelPort> <tunnelUser>@<tunnelHost>

암호 입력이 나오면 <tunnelHost>의 암호를 입력합니다.

lsof -i4 -P | grep -i "listen" | grep <localPort>
nc -zv 127.0.0.1 <localPort>
ps -lef | grep ssh | grep "\-L \?<localPort>" \
| awk '{print $4}' | xargs kill -9

ssh ProxyJump

ssh -o 'ProxyJump <proxyArgs>[,<proxyArgs>]' \
<hostArgs>
  • <proxyArgs>
    • <proxyAlias>
    • <proxyUser>@<proxyHost>[:<proxyPort>]

-o ProxyJump-J로 대체할 수 있습니다.

ProxyJump를 지원하지 않는 버전의 경우 아래와 같이 ProxyCommand를 활용할 수 있습니다.

ssh -o 'ProxyCommand ssh -W %h:%p <proxyArgs>' \
<hostArgs>
  • <proxyArgs>에는 프록시 서버에 접속하기 위한 인자를 입력합니다.
  • <hostArgs>에는 목적지 서버에 접속하기 위한 인자를 입력합니다.