Access to remote server using ssh key with iterm2
환경
- Mac OS
- ssh-keygen (SSH에 사용할 키 발급)
- ssh-copy-id (발급된 공개키를 서버에 전송)
- 원격 서버 (Ubuntu 16.04) 및 사용자
서버에 사용자가 추가되어 있다고 가정한다. 사용자 추가에 대한 부분은 많은 자료들이 존재하므로 참고하도록 한다.
ssh-copy-id 설치
ssh-copy-id
는 로컬에서 발급된 공개키를 서버로 전송할 때 사용하는 패키지다.
$ brew install ssh-copy-id
SSH Key 발급
~/.ssh
폴더를 기준으로 한다.
# ssh-keygen [-t] [rsa] [-b] [2048]
# -t : dsa, ecdsa, ed25519, rsa, rsa1 중에 어떤 암호화 알고리즘을 선택할지 지정 (기본 값, rsa)
# -b : key를 생성할 때 bit 수 지정 (기본 값, 2048)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/<현재 사용자>/.ssh/id_rsa): <<< 여기에 저장될 파일 경로 또는 파일명 입력
Enter passphrase (empty for no passphrase): <<< 비밀번호로 사용할 값
Enter same passphrase again: <<< 다시 입력
Your identification has been saved in <파일명>
Your public key has been saved in <파일명>.pub.
키 파일에 대한 권한 문제
ssh-key을 통해서 처리한 경우는 문제가 되지 않을 수 있지만 수동으로 처리한 경우는 다음과 같이 파일 권한을 설정해 줘야 한다.
- 공개 키 : 0644 (-rw-r--r--)
- 개인 키 : 0600 (-rw-------)
위와 같이 권한을 설정해 주지 않으면 원격 서버에 연결했을 떄 오류가 발생하며 접속이 허용되지 않는다.
발급된 공개 키 서버로 전송
별다른 입력이 없이 기본으로 처리했다면 ~/.ssh
폴더에 private key와 public key 파일이 생성된다.
파일명을 test
라고 지정했다면 'test', 'test.pub' 파일이 존재할 것이다.
# ssh-copy-id -i [key path or name] [username in server]@[server ip] $ ssh-copy-id -i test.pub ccambo@192.168.10.44 /usr/local/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "test.pub" /usr/local/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/local/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys test@[IP Address]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘test@[IP Address]’” and check to make sure that only the key(s) you wanted were added.
실체 키 추가 여부는 지정한 서버의 사용자로 로그인을 해서 ~/.ssh/authorized_keys
파일에 지정한 키가 제대로 추가되었는지 확인하면 된다.
SSH로 접속하기
# ssh -i [private key name] [username in server]@[server id] -p [port number]
$ ssh -i test ccambo@192.168.10.44
SSH 접속 설정하기
~/.ssh/config
파일을 통해서 접속을 쉽게 처리할 수 있다.
config 파일이 경로에 없다면 생성한다.
$ cd ~/.ssh
$ touch config
config 파일을 열고 아래와 같이 설정해 주면 된다.
Host ccamboServer HostName [IP Address] User [Username] Port [Port Number] IdentityFile ~/.ssh/[private key name]
Host Name2 HostName [IP Address] User [Username] Port [Port Number] IdentityFile ~/.ssh/[private key name]
설정을 통해서 SSH 접속은 다음과 같이 지정한 Host 이름을 기준으로 하면 된다.
# ssh [host name in config file]
$ ssh ccamboServer
댓글
댓글 쓰기