[네트워크] ssh 암호 없이 사용하기
ssh을 암호 없이 사용하는 방법에 대한 간단한 요령입니다. 안선일이 팀장
얘기로는 .rhosts만 설정하면 된다고 했는데 그 방법은 안되는 경우도
있고 ssh의 표준 방식이 아니기 때문에 제대로 하려면 얼마나 복잡한가를
보여드리겠습니다.
o 필요한 것들
ssh, ssh-keygen, ssh-agent, ssh-add
o 방법
1. 우선 ssh-keygen을 사용하여 자신의 public/private key pair를 만든다.
/home/djshin > ssh-keygen
Generating RSA keys: ..ooooooO..ooooooO
Key generation complete.
Enter file in which to save the key (/home/djshin/.ssh/identity): (그냥
엔터)
Enter passphrase (empty for no passphrase): (어쩌구 저쩌구)
Enter same passphrase again: (위의 어쩌구 반복)
Your identification has been saved in /home/djshin/.ssh/identity.
Your public key has been saved in /home/djshin/.ssh/identity.pub.
The key fingerprint is:
4c:4e:92:fd:7b:f3:5b:dd:6d:00:c9:09:85:38:7e:b8 djshin@winter
이렇게 하면 ~/.ssh/identity.pub 이라는 public key가 생긴다.
2. ssh을 할 서버의 계정 밑에 .ssh/authorized_keys라는 파일을 만들어 위의
identity.pub의 내용을 추가한다. 주의할 것은 autorized_keys의 permission이
600 이어야 한다는 점이다.
3. ssh client 기계에서 ssh-agent를 수행한다. ssh-agent는 ssh session
negotiation에서
client의 identity 정보를 서버에 넘겨주는 역할을 한다.
X를 사용하는 경우 X를 띄우기 전에 수행하거나 .xsession에 추가하는 것이 좋다.
ssh-agent는 환경변수를 설정하는 명령문들을 출력하는데 shell의 종류에 맞도록
하기 위해
다음과 같이 수행한다.
[C shell의 경우]
eval `ssh-agent -c`
[born shell의 경우]
eval `ssh-agent -s`
심심풀이로 그냥 “ssh-agent -c”를 수행해보면 다음과 같이 출력된다(괄호 부분
빼고)
setenv SSH_AUTH_SOCK /tmp/ssh-ITa22834/agent.22834; (-> stdout)
setenv SSH_AGENT_PID 22835; (-> stdout)
echo Agent pid 22835; (-> stderr)
그러니 eval backtick(`)을 쓰면 처음 두 라인만 evaluation이 되어 환경 변수에
저장이 되겠다.
4. ssh-add를 수행하고 pass phrase를 입력한다. ssh-add는 ssh-agent에 사용자의
identity를 등록시키는 일을 한다.
5. 이제 password 없이도 ssh을 쓸 수 있당.
이와 같은 방식의 no password 인증은 .rhosts를 사용하는 것보다 안전한 인증
기법을
제공한다. 이는 client 기계에 대한 정보 + pass phrase로 검증된 identity가
인증에 사용되기
때문이다.
=======================================
ssh 로 패스워드 인증 없이 들어가기
A 호스트의 root 계정에서
# ssh-keygen -t rsa
# vi /root/.ssh/id_rsa.pub
—————————————————————–
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAzpazPYmbyoKWWw
ZMSFiSxJIgQnc+0UlCtrceUla9kvN69jJrhlGHX3ar4sjjNRUJq
3+Hbb/B2XcwiGWvpu270WR4xUZqCxjDvlEDNUtL+a6HeMz
heKZMNE0z0rRDjdUmfQQVSClLQY3bXDlo9meDbDIWENhJ
z0XjRW/10R7LACU= root@otn2
—————————————————————–
를 복사하여 B호스트에서..
# ssh-keygen -t rsa
# vi /root/vi .ssh/authorized_keys2
—————————————————————–
붙여준다.
—————————————————————–
그런후 A 에서 B로 접속하면 된다.