호스트에 연결할 때 비밀번호를 입력하지 않아도되도록 SSH를 어떻게 설정합니까?
~/.ssh/config
현재 필요한 사항을 변경해야했기 때문에 다시 프롬프트되었습니다.PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
호스트에 연결할 때 비밀번호를 입력하지 않아도되도록 SSH를 어떻게 설정합니까?
~/.ssh/config
현재 필요한 사항을 변경해야했기 때문에 다시 프롬프트되었습니다.PubkeyAcceptedKeyTypes ssh-rsa*,ssh-dss*
답변:
그놈을 사용한다면, 해마 응용 프로그램 ( "비밀번호 및 암호화 키")이이를 수행 할 수 있습니다 : 파일 -> 새로 만들기 -> 보안 쉘 키 .
터미널을 선호하는 경우 키 페어를 생성하도록 실행하십시오 . 유효한 키 쌍 유형은 다음과 같습니다.ssh-keygen -t <type>
프로그램에서 암호 와 새 키를 저장할 위치 를 묻습니다 . 제안 된 기본 경로를 사용하는 것이 좋습니다. 다른 모든 도구는 해당 경로를 찾습니다.
다시 말하지만, 해마 는 종종 내 개인 키 에서 SSH 키를 마우스 오른쪽 버튼으로 클릭하고 보안 쉘을위한 키 구성을 선택하여이를 수행 할 수 있습니다 .
또는 ssh-copy-id -i ~/.ssh/id_rsa.pub remote-user@remote-host
터미널에서.
또는 완전히 수동으로 단계별로 :
.ssh
원격 호스트에서 원격 사용자의 홈 디렉토리에 이름이 지정된 디렉토리를 작성하십시오 (없는 경우) .authorized_keys
이없는 파일을 작성하십시오 (아직없는 경우).umask
이 평소보다 더 자유로운 경우 파일을 그룹 쓰기 가능으로 만들지 마십시오 chmod go-w ~/.ssh ~/.ssh/authorized_keys
.~/.ssh/id_rsa.pub
) 의 내용을 원격 ~/.ssh/authorized_keys
파일에 복사 (추가) 합니다.개인 키를 ssh 에이전트에 로드 하면 암호 해독 된 키가 메모리에 보관됩니다. 서버에 쉘을 넣을 때마다 비밀번호를 다시 입력하지 않기를 원합니다.
먼저 에이전트를 시작하거나 시작된 통신 소켓의 경로를 변수에로드해야합니다. 터미널에서 ssh-agent 를 실행 하면 에이전트 변수를 지정하고 설정하기위한 명령이 생성됩니다. 이 명령들은 다른 터미널에서 사용하기 위해 파일로 저장할 수 있습니다. 또는 이러한 명령을 실행하고 다른 터미널에서 동일한 에이전트를 다시 사용하는 것을 잊어 버릴 수 있습니다. 예 : eval $(ssh-agent)
.
키를로드하는 ssh-add
것은 암호 문구 를 실행 하고 제공 하는 간단한 문제입니다 .
그놈을 사용하는 경우 gnome-keyring-daemon은 일반적으로 ssh-agent와 동일한 SSH 에이전트 기능을 제공하므로 아무것도 시작할 필요가 없습니다. 그놈도 로그인시 키를 자동으로로드 및 잠금 해제합니다.
모든 것이 올바르게 완료되면을 사용해 도 암호를 묻는 메시지가 표시되지 않습니다. 키가 아닌 에이전트에 문제가있는 경우 사용자 계정의 암호가 아니라 키의 암호 문구를 입력하라는 메시지가 표시됩니다.ssh user@server
통신에 ssh를 사용하는 것은 올바른 키가 에이전트에로드 될 때 사용자 계정 비밀번호를 입력하지 않아도 작동합니다. scp , sftp 및 rsync 와 같은 프로그램 이이를 사용합니다.
id_dsa
하는 경우 대신을 사용하면 id_rsa
ECDSA에 id_ecdsa
.authorized_keys2
되었지만 실제로 5.0보다 오래된 것을 찾을 가능성은 거의 없습니다.lsh
, ssh.com
및 기타 (Unix 및 not) SSH 서버는이 자습서에 포함되어 있지 않습니다.공개 키를 원격 호스트에 복사 :
ssh-copy-id -i ~ / .ssh / id_rsa.pub myaccount @ remotehost #이 고양이 ~ / .ssh / id_rsa.pub | ssh myaccount @ remotehost \ 'mkdir -p ~ / .ssh; cat >> ~ / .ssh / authorized_keys '# 또는 이것
ssh-agent> ~ / .ssh / 크로스 터미널 에이전트 . ~ / .ssh / 크로스 터미널 에이전트
ssh-copy-id
공개 키를 대상 호스트에 복사하고 권한을 자동으로 설정 하는 명령 이 있습니다.
ssh-keygen -f ~/.ssh/id_rsa -N "";ssh-copy-id -i ~/.ssh/id_rsa username@server-ip-or-address
(바꾸기 username@server-ip-or-address
).
사용중인 Unix, 연결중인 Unix, 사용중인 쉘, 사용중인 SSH 변형 등을 지정하지 않았습니다. 따라서이 중 일부를 약간 조정해야합니다. 이것은 많은 유닉스 변형에 사용되는 합리적으로 최신 버전의 OpenSSH를 기반으로합니다.
이것은 모두 로컬 데스크톱 시스템에서 가져온 것입니다.
ssh-keygen
키 이름에 기본값을 사용해야합니다. 난 당신이 제안 할 그렇지 않으면 보안 문제입니다, 그 키에 암호를 설정합니다. "-t rsa"는 나쁜 생각은 아니지만 아마도 필요하지는 않습니다.
ssh-copy-id username@server
그러면 로그인에 사용할 비밀번호를 묻는 메시지가 표시되고 authorized_keys 항목이 설정됩니다. (손으로 할 필요가 없습니다)
그런 다음,
`ssh-agent`
또는 아마도 :
exec ssh-agent sh
또는:
exec ssh-agent bash
그러면 키를 보유 할 수있는 SSH 에이전트가 시작됩니다. 많은 최신 유닉스 변종에서 그래픽으로 로그인하면 이미 발생했을 것입니다. 첫 번째 변형 (백틱 포함)은 ssh-agent를 백그라운드에 넣고 환경 변수를 설정하여 대화합니다. 두 번째는 에이전트가 쉘을 실행하도록하여 쉘을 종료하면 에이전트가 종료됩니다.
많은 최신 Unix 변형에는 특히 그래픽으로 로그인 한 경우 에이전트가 이미 실행 중입니다. " ps aux | grep ssh-agent
"또는 " ps -ef | grep ssh-agent
"를 시도 할 수 있습니다 . 이미 실행중인 것이 있으면 사용하십시오.
그런 다음 마지막으로
ssh-add
암호를 요구할 것입니다. 당신이 ssh-keygen에게 준 것을 주라. 그래픽으로 요청하는 방법도 있습니다. 그리고 ssh-agent 및 ssh-add 항목을 로그인 스크립트 (사용하는 쉘에 따라 설정이 다름)에 넣어이를 자동화 할 수 있지만 일부 Unix 변형 (예 : 현재 Ubuntu Linux)은 대부분 자동으로 수행하므로 실제로 필요한 것은 키를 만들고 ssh-copy-id를 사용하여 원격 호스트에서 설정하는 것입니다.
이제 " ssh username@server
"는 인증을 요구하지 않고 작동합니다. 무대 뒤에서는 ssh-agent가 보유하고있는 키를 사용하여 에이전트에게 마법 서명을 요구합니다.
Windows의 PuTTY에서도이 작업을 수행 할 수 있습니다.
퍼블릭 / 프라이빗 키 페어가 설정되면 (여기 다른 답변에서 볼 수 있듯이) PuttyGen을 실행하십시오. 여기에서 이미 설정 한 기존 개인 키를로드 한 다음 PuTTY 개인 키 (ppk)로 저장합니다.
그런 다음 PuTTY에서 자동 로그인하려는 저장된 세션을 클릭하고로드를 클릭하십시오. 여기에서 왼쪽 분할 창의 연결-> 데이터로 이동 한 후 "원격 로그인 사용자 이름"에 해당 원격 서버의 사용자 이름을 입력하십시오.
그런 다음 Connection-> SSH-> Auth로 이동하여 PuttyGen에서 작성한 ppk를 찾으십시오.
그런 다음 세션 페이지로 돌아가서 이전에로드 한 세션을 저장하십시오.
ServerFault 에 대한 매우 유사한 질문에서 ssh-copy-id를 사용하는 것이 좋습니다 .이 방법은 인증 키 설정과 관련된 모든 단계를 수행합니다.
ssh-copy-id는 ssh를 사용하여 원격 컴퓨터에 로그인하는 스크립트입니다 (아마도 로그인 암호를 사용하므로 여러 ID를 영리하게 사용하지 않는 한 암호 인증을 활성화해야합니다)
또한 원격 사용자의 홈인 ~ / .ssh 및 ~ / .ssh / authorized_keys의 권한을 변경하여 그룹 쓰기 기능을 제거합니다 (원격 sshd에 구성에 엄격한 모드가 설정되어 있으면 로그인 할 수 없음).
-i 옵션이 제공되면 ssh-agent에 키가 있는지 여부에 관계없이 ID 파일 (기본값은 ~ / .ssh / identity.pub)이 사용됩니다.
당신이해야 할 일은 단순히 이것입니다 :
ssh-copy-id user@host
비밀번호를 한 번 입력하면 계속 사용할 수 있습니다!
ssh 키를 설정하는 방법에 대해 이미 말한 것 외에도 Keychain 을 ssh-agent 콘솔 프론트 엔드 로 권장합니다. 이를 통해 로그인 대신 시스템 프로세스 당 하나만 처리 할 수 있습니다.
이미 동일한 그놈 및 KDE 도구가 있다는 것을 알고 있지만 콘솔 중독자 유형 이라면 훌륭합니다 (대부분의 유닉스 시스템에서 사용할 수 있음).
그것을 사용하려면 간단히 다음을 추가하십시오 ~/.bashrc
(다른 쉘과 유사).
if type keychain >/dev/null 2>/dev/null; then
keychain --nogui -q <all your SSH/PGP keys>
[ -f ~/.keychain/${HOSTNAME}-sh ] && . ~/.keychain/${HOSTNAME}-sh
[ -f ~/.keychain/${HOSTNAME}-sh-gpg ] && . ~/.keychain/${HOSTNAME}-sh-gpg
fi
http://linuxproblem.org/art_9.html
당신의 목표
Linux 및 OpenSSH를 사용하여 작업을 자동화하려고합니다. 따라서 호스트 A / 사용자 a에서 호스트 B / 사용자로 자동 로그인해야합니다. b. 쉘 스크립트 내에서 ssh를 호출하기 때문에 비밀번호를 입력하고 싶지 않습니다.
REALLY REALLY REALY REALY long tutorials cos 정말 실망스러워서 매우 간단한 튜토리얼을 썼습니다 :)
test -f ~/.ssh/id_rsa.pub || ssh-keygen -t rsa #press enter twice if given prompts, then "ssh-add"
scp ~/.ssh/id_rsa.pub destID@destMachine:/tmp/ #type password
ssh destID@destMachine #type password
cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
rm /tmp/id_rsa.pub
ssh-keygen
. (유형을 지정하라는 메시지가 표시되면을 수행하십시오 ssh-keygen -t rsa
.) 파일 위치를 묻는 메시지가 표시되면 기본값을 사용하십시오. 암호 문구를 물을 때 암호를 입력하지 않으려면 Enter 키를 누르십시오.cat ~/.ssh/id_rsa.pub
(또는 무엇이든 기본 파일 위치에서은 ssh-keygen
당신이해야 할 거라고하지만했다 정말 오래된 ssh
이 다를 수에 대한 설치); 출력을 클립 보드에 복사하십시오.~/.ssh/authorized_keys
( ~/.ssh
존재하지 않는 경우 slogin
올바른 권한으로 파일을 작성하는 간단하고 쉬운 방법 임). id_rsa.pub
다른 호스트 의 클립 보드 를이 파일에 붙여 넣습니다 .Linux의 터미널에서 모두 수행하려면 다음을 수행하십시오.
호스트에서
cd ~ / .ssh /
ssh-keygen -t {rsa | dsa} -b {1024 | 2048 | 4096} -C "원하는 경우 일부 주석 텍스트"-f id_ArbitraryName
{}의 항목은 옵션이며 rsa 또는 dsa를 사용하고 비트 크기를 선택하십시오 (더 클수록 더 안전합니다)
그런 다음 authorized_keys 및 certified_keys2 파일에 권한을 추가해야합니다.
cat id_ArbitraryName.pub >> certified_keys
cat id_AribtraryName.pub >> certified_keys2
그런 다음 id_AribtraryName 파일을 ssh하려는 상자에 다운로드하십시오. 연결 박스가 유닉스 기반이라면, 설정 파일이 필요할 수 있습니다 (퍼티에서 위의 누군가가 그것을 덮었습니다).
연결 상자에서
설정 파일에서-vim ~ / .ssh / config
호스트 example.host.com # 또는 컴퓨터 이름
사용자 이름
IdentityFile ~ / .ssh / id_ArbitraryName
구성 파일에는 600의 권한이 필요합니다. SSh 폴더에는 700이 필요합니다.
많은 생략 된 구성 문제가 발생하면 도움이되기를 바랍니다.