집에 게으 르며 집 컴퓨터에 암호 인증을 사용합니다. 키 기반 인증으로 이동할 준비가되었습니다. 웹에서이 작업을 수행하는 방법에 대한 옵션은 많이 있습니다.
키를 복사하는 가장 쉽고 권장되는 방법을 찾고 있는데 Ubuntu ssh 패키지의 어딘가에 편리한 래퍼가 있습니까?
비밀번호 로그인을 차단하는 방법을 이미 알고 있습니다.
집에 게으 르며 집 컴퓨터에 암호 인증을 사용합니다. 키 기반 인증으로 이동할 준비가되었습니다. 웹에서이 작업을 수행하는 방법에 대한 옵션은 많이 있습니다.
키를 복사하는 가장 쉽고 권장되는 방법을 찾고 있는데 Ubuntu ssh 패키지의 어딘가에 편리한 래퍼가 있습니까?
비밀번호 로그인을 차단하는 방법을 이미 알고 있습니다.
답변:
openssh-client 패키지 ssh-copy-id
에서 명령 이 기본적으로 설치되어 있는 명령은 다음 과 같습니다.
ssh-copy-id user@hostname.example.com
기본 아이디의 공개 키 ( -i identity_file
다른 아이디에 사용)를 원격 호스트에 복사합니다 .
기본 아이디는 "표준"ssh 키입니다. 그것은 당신의 두 개의 파일 (공개 키와 개인 키)로 구성 ~/.ssh
디렉토리, 일반적으로 이름이 identity
, id_rsa
, id_dsa
, id_ecdsa
또는 id_ed25519
(그리고와 같은 .pub
), 키의 종류에 따라. 하나 이상의 ssh 키를 작성하지 않은 경우 ID 지정에 대해 걱정할 필요가 없습니다. ssh-copy-id는 자동으로 선택합니다.
아이디가없는 경우 도구를 사용하여 아이디를 생성 할 수 있습니다 ssh-keygen
.
또한 서버가 기본 포트 ( 22
) 와 다른 포트를 사용하는 경우 다음과 같이 따옴표를 사용해야합니다 ( source ).
ssh-copy-id "user@hostname.example.com -p <port-number>"
ssh-copy-id "user@host -p 6842"
brew install ssh-copy-id
에서는 명령을 수행 한 다음 실행할 수 있습니다 .
나는 Marcel의 대답을 좋아합니다. 나는이 명령을 몰랐다. 나는 항상 Oracle 웹 사이트 에서 찾은 것을 사용했습니다 .
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
쉘 코드 에서의 힘 으로 달성 할 수있는 것을 잘 보여주기 때문에 여전히 여기에 게시하려고 생각했습니다 ssh
. 그러나를 사용하는 ssh-copy-id
것이 올바르게 수행하는 가장 안전한 방법입니다!
폴더 .ssh
가 존재하지 않으면 위의 명령이 실패합니다. 또한 최소한의 사용 권한을 설정하기 위해 파일을 만들 때 더 좋습니다 (기본적으로 소유자의 경우 읽기 / 쓰기 만 가능). 보다 고급 명령은 다음과 같습니다.
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
.ssh
가 원격에 존재하지 않는 경우 업데이트 된 명령으로 게시물을 업데이트했습니다 .
cat
필요하지 않습니다 - 일반 입력 리디렉션이 충분하다, 예를 들면< ~/.ssh/id_rsa.pub | ssh ...
seahorse
입니다.
Ubuntu에서는 Launchpad에서 키를 가져올 수 있습니다.
ssh-import-id [launchpad account name]
세부 사항 :
해당 필드에 공개 키 파일의 내용을 붙여 넣습니다 (설명 포함). 이러한 키는 다음과 같습니다.
ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
여기서 ssh-rsa
키가 RSA 키이고 AAAAB3Nza .... UyDOFDqJp
실제 키이며 lekensteyn
주석 임을 나타냅니다 .
패키지 ssh-import-id
는 원격에서 액세스해야하는 머신에 설치해야합니다. 이 패키지는 openssh-server
권장 패키지이므로 패키지 와 함께 설치됩니다 openssh-server
. ssh-import-id
클라이언트 시스템에 설치 되었는지 확인한 후 다음을 실행하십시오.
ssh-import-id [launchpad account name]
그러면 MITM 공격으로부터 사용자를 보호하는 HTTPS를 통해 런치 패드 서버에서 공개 키를 다운로드합니다.
우분투 루시드와 그 이전 버전에서는 다음과 같은 방법으로 달성 할 수 있습니다.
wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys
echo
명령은 SSH 키를 사용하여 줄 끝에서 여분의 줄 바꿈을 얻기 위해 필요합니다.
맞춤 포트 용
ssh-copy-id -i "user@hostname.example.com -p2222"
-i 스위치 기본값은 ~ / .ssh / id_rsa.pub입니다. 다른 키를 원할 경우 -i 뒤에 키 경로를 입력하십시오.
경고 : -i를 쓰지 않으면 ~ / .ssh에있는 모든 키가 복사됩니다.
ssh-copy-id
정확히 그렇게합니다. 왜 여기에 다른 답변 중 일부가 부정확 한 정보를 추가하는지 잘 모르겠습니다. 도움말은 다음을 보여줍니다.
~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
-f: force mode -- copy keys without trying to check if they are already installed
-n: dry run -- no keys are actually copied
-h|-?: print this help
CentOS 7.6 서버가있는 Ubuntu 18.04 클라이언트에서 다음을 시도했지만 매력처럼 작동했습니다. 이 예에서는의 사용자 지정 포트를 사용하고 2222
에 공개 키를 지정하는 방법을 보여줍니다 .~/.ssh/path-to-rsa.pub
$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld
명령을 실행하기 전에 실제로 -n
마지막에 스위치를 사용 하여 명령이 의도 한대로 작동하는지 확인한 드라 이런을 수행했습니다. 일단 확인하면 -n
스위치 없이 위와 같이 명령을 다시 실행했습니다 .