답변:
ssh-copy-id는 매우 간단한 스크립트로 Windows에서 쉽게 복제 할 수 있어야합니다.
모든 매개 변수 처리, 오류 처리 등을 무시하면 실제로 대부분의 작업을 수행하는 ssh-copy-id의 두 명령입니다.
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
퍼티 도구를 사용하면 이와 같은 명령이 동일해야합니다 (테스트되지 않음).
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
동일한 오류 처리와 자동 키 위치를 모두 원한다면 Windows에서 스크립트를 작성하는 것이 훨씬 까다로울 수 있지만 확실합니다.
plink.exe -pw password
공장. 당신은 SSH를 알고 또한 경우 / authorized_keys에 명령이 단순히 존재type id_rsa.pub | plink.exe -ssh user@host -pw password "cat >> .ssh/authorized_keys"
.ssh/
디렉토리가 존재 하면 충분 합니다. >>
존재하지 않는 경우 리디렉션은 다음 파일을 생성합니다.
이 답변은 도움이되지 않았습니다. 나는 정말 미친 스크립트가 필요하지 않았습니다. 클라이언트 컴퓨터에서 git bash의 공개 키를 만들고 VPS에 복사하려고했습니다.
공개 키를 만든 후 키는 "(시작한 폴더) /. ssh / id_rsa.pub"로 저장해야합니다.
따라서이 명령을 사용하십시오 :
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys"
여기서 user
사용자 이름은 ( "root"또는 설정 한 내용) 123.45.67.89
시스템 / 호스트 / VPS의 IP 주소로 바꾸 십시오.
.ssh
호스트 시스템 에서 디렉토리 가 아직 작성되지 않은 경우 다음과 같은 작은 변형을 사용하십시오.
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
ssh-copy-id는 몇 가지 작업을 수행 하지만 (자세한 내용 은 맨 페이지 를 읽으십시오 ) 가장 중요한 것은 로컬 공개 키 파일의 내용을 authorized_keys라는 원격 파일에 추가하는 것입니다.
텍스트 편집기로 키 파일을 열고 키티 터미널에 내용을 붙여 넣어서 직접 할 수 있습니다.
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
또는 WinSCP 를 사용 하여 파일을 업로드하고 (sftp 또는 scp를 대체로 사용) 추악한 복사 / 붙여 넣기없이 이전 제안과 비슷한 작업을 수행 할 수 있습니다.
cat id_rsa.pub >> .ssh/authorized_keys
여기서 id_rsa.pub는 업로드 한 공개 키의 파일 이름입니다.
zoredache의 답변에서 영감을 얻어 Windows 버전 인 많은 스크립트를 만들었습니다. 그러나 그들은 모두 plink에 의존합니다. 여기를보세요
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
또한 다른 답변에 따라 사용할 수있는 winscp 스크립트가 있습니다. :) 읽어보기에서 발췌 :
지금까지 시도한 방법 :
usage: .\Scriptname test@example.com password [identity file]
usage: .\Scriptname /i:idtest.pub user@example.com /p:password
usage: .\Scriptname -i idtest.pub user@example.com password
# "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
Windows 7에는 ssh.exe가 있습니다
다음은 나를 위해 일한 것입니다.
1. 아이덴티티 생성 (창에서)
c:\>ssh-keygen
홈 디렉토리에 ID 파일이 작성되었습니다. 공개 키 이름을 "id_rsa"로 변경했습니다.
2. 그의 답변을 위해 https://serverfault.com/users/984/zoredache 에 ssh 크레딧을 사용하여 파일을 대상 Linux 시스템에 복사하십시오.
c:\>ssh user@lnxhost "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" < \\path_to_where_the_file_was_generated_from_ssh_key_gen\id_rsa.pub
참고 : 어떤 이유로 배관이 작동하지 않았습니다.
# this should work but it didn't work for me
type file | ssh user@lnxhost "cat >> /tmp/t.txt"
3. 리눅스에서 파일 수정하기 윈도우상의 id_rsa.pub 파일은 리눅스가 한 줄로 예상하는 여러 줄로되어 있으므로 약간 수정해야합니다. 리눅스에 로그인하여 파일을 엽니 다 :
vi ~/.ssh/authorized_keys
예를 들면 다음과 같습니다.
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, user@winhost"
AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla33
5flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMC
Y58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVy
ax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdT
LFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHE
Qkw+1wuV6dFoT1/hngSw==
---- END SSH2 PUBLIC KEY ----
되어야한다
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost
4. 테스트
c:\>ssh user@lnxhost "ls -al /tmp/"
암호를 묻지 않고 / tmp의 내용을 나열해야합니다.
authorized_keys
한 줄로 다시 포맷 하기 만하면됩니다 !
당신이없는 경우 ssh-copy-id
Windows에서, 당신은 서버 자체에서 실행할 수 있습니다.
.pub
확장자 가있는 파일에 내용을 저장하십시오 ..pub
파일을 서버에 업로드하십시오 .서버에서 다음을 입력하십시오.
ssh-copy-id -i mykey.pub username@localhost
Windows ssh-copy-id
스크립트 에서는 Windows 용 Git 이 제공됩니다 . 따라서 Git for Windows가있는 경우 로컬에서 사용할 수 있습니다.
이 작업을 수동으로 수행하지 않으려면 WinSCP 5.15를 사용할 수 있습니다 . 공개 키 인증을 설정할 수 있습니다. SSH> WinSCP 고급 사이트 설정 대화 상자의 인증 페이지 에서 도구> 서버에 공개 키 설치 단추를
사용하십시오 .
(저는 WinSCP의 저자입니다)
당신이 사용하는 경우 cmder (SCP 및 SSH가 있거나 msysgit /와 Mingw를) 그냥 이것에 대한 간단한 파이썬 스크립트를 썼다. https://gist.github.com/ceilfors/fb6908dc8ac96e8fc983 에서 찾을 수 있습니다.
샘플 사용법 : python ssh-copy-id.py user @ remote-machine.
스크립트를 실행하면 비밀번호가 프롬프트됩니다.
내가 한 일, CygWin을 Win10에 가지고 Linux에 연결 (위의 답변을 기반으로) :
-참고 : cat을 사용하면 cygwin-linux-folder-structure를 사용하는 cygwin 명령뿐만 아니라 cygwin 경로를 자동으로 해결합니다.
1. added c:\cygwin\bin to the environment's Path variable
2. starting cmd.exe (windows commandline)
3. > ssh-keygen -t rsa (just pressing enter till done)
4. > cat ~/.ssh/id_rsa.pub | ssh user@server "umask 077; test -d ~/.ssh || mkdir ~/.ssh ; cat >> ~/.ssh/authorized_keys"
5. ..enter server password
6. > ssh user@server (testing, not beeing asked for password)
다음 단계를 수행하십시오.
1 단계 : RSA 키 페어 생성
C:\Users\user>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/user//.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/user//.ssh/id_rsa.
Your public key has been saved in /c/Users/user//.ssh/id_rsa.pub.
The key fingerprint is:
20:16:9b:0d:00:92:c4:34:99:51:20:b7:ef:50:c4:0f user@localhost
STE2-2 : Windows에서 ssh-copy-id에 해당
C:\Users\user>ssh user@remote "umask 077; test -d .ssh || mkdir .ssh ; cat >> .s
sh/authorized_keys || exit 1" < "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys
|| exit 1" < C:\Users\user\.ssh\id_rsa.pub
The authenticity of host 'remote (xx.xx.xxx.xx)' can't be established.
RSA key fingerprint is 99:99:73:74:fe:14:bc:91:c8:3b:ac:f4:95:99:4d:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'remote,xx.xx.xxx.xx' (RSA) to the list of known hosts.
*************************************************************************
This computer system is the property of Sample Corporation and is to
be used for business purposes. All information, messages, software and
hardware created, stored, accessed, received, or used by you through
this system is considered to be the sole property of Sample Corporation
and can and may be monitored, reviewed, and retained at any time. You
should have no expectation that any such information, messages or
material will be private. By accessing and using this computer, you
acknowledge and consent to such monitoring and information retrieval.
By accessing and using this computer, you also agree to comply with
all of Sample Company's policies and standards.
*************************************************************************
user@remote's password:[Enter Password for first time]
STEP-3 : 비밀번호없는 인증 작동!
C:\Users\user>ssh user@remote
*************************************************************************
This computer system is the property of Sample Corporation and is to
be used for business purposes. All information, messages, software and
hardware created, stored, accessed, received, or used by you through
this system is considered to be the sole property of Sample Corporation
and can and may be monitored, reviewed, and retained at any time. You
should have no expectation that any such information, messages or
material will be private. By accessing and using this computer, you
acknowledge and consent to such monitoring and information retrieval.
By accessing and using this computer, you also agree to comply with
all of Sample Company's policies and standards.
*************************************************************************
Last login: Wed Oct 14 14:37:13 2015 from localhost
GitHub에있는 ssh-copy-id의 Windows 버전이 있습니다 : https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist
실제로, 그것은 당신이 ssh
당신의 경로에 있는 한 작동 할 수 있습니다 . powershell 프로파일에 다음을 추가하십시오.
function ssh-copy-id([string]$userAtMachine){
$publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
if (!(Test-Path "$publicKey")){
Write-Error "ERROR: failed to open ID file '$publicKey': No such file"
}
else {
& cat "$publicKey" | ssh $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"
}
}
Powershell 콘솔에서 :
ssh-copy-id user@machine