Windowsで利用可能な同等またはssh-copy-idのポートはありますか?つまり、WindowsでローカルマシンからリモートサーバーにSSHキーを転送する簡単な方法はありますか?
それが役立つ場合、私はPageantと Kitty (PuTTYの代替)をすでに使用しています。
ssh-copy-idは、Windowsでの複製が非常に簡単な、非常に単純なスクリプトです。
すべてのパラメーター処理、エラー処理などを無視する場合、これらは実際にほとんどの時間作業を行っているssh-copy-idからの2つのコマンドです。
GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1
PuTTYツールを使用すると、このようなコマンドは同等になります(テストされていません)。
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
すべて同じエラー処理と自動キー位置を実行したい場合は、Windowsでスクリプトを作成するのはかなり難しくなりますが、確かに可能です。
これらの答えは私を助けませんでした。本当にクレイジーなスクリプトは必要ありませんでした。クライアントマシンでgit bashで公開鍵を作成し、それをVPSにコピーしようとしていました。
公開鍵を作成した後、鍵は「(開始したフォルダ)/。ssh/id_rsa.pub」として保存されます。
したがって、次のコマンドを使用します。cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"
ここで、user
はユーザー名(「ルート」など、設定したもの)であり、123.45.67.89
マシン/ホスト/ VPSのIPアドレス。
ディレクトリ.ssh
はまだホストマシンで作成されていません。この小さなバリエーションを使用してください:cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
ssh-copy-idはいくつかのことを行いますが(詳細は man page を参照)、ローカルの公開鍵ファイルの内容を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スクリプトを持っています。 :) readmeからの抜粋:
これまでに試みた方法:
usage: .\Scriptname [email protected] password [identity file]
usage: .\Scriptname /i:idtest.pub [email protected] /p:password
usage: .\Scriptname -i idtest.pub [email protected] password
# "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
Windowsにssh-copy-id
がない場合は、サーバー自体で実行できます。
.pub
拡張子の付いたファイルに保存します。.pub
ファイルをサーバーにアップロードします。サーバータイプ:
ssh-copy-id -i mykey.pub username@localhost
Windowsでは、ssh-copy-id
スクリプトには Git for Windows が付属しています。したがって、Git for Windowsを使用している場合は、ローカルで使用できます。
これを手動で実行したくない場合は、 WinSCP 5.15を使用できます。公開鍵認証を設定できます。
ツールを使用> SSHの[サーバーに公開鍵をインストール]ボタン> [WinSCP詳細サイト設定]ダイアログの[認証]ページ 。
(WinSCPの作成者です)
Windows 7にはssh.exeがあります
これが私のために働いたものです:
1。 IDを作成する(Windowsの場合)
c:\>ssh-keygen
これにより、ホームディレクトリにIDファイルが作成されました。公開鍵の名前を「id_rsa」に変更しました
2。 sshCredits https://serverfault.com/users/984/zoredache を使用してファイルをターゲットの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。 Linuxでファイルを修正するWindowsのid_rsa.pubファイルは複数行であり、Linuxはそれを単一行で想定しているため、少し修正する必要があります。 Linuxにログインしてファイルを開きます。
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の内容がリストされます。
私が行ったこと、Win10にCygWinを持ち、Linuxに接続する(上記の回答に基づく):
-注:catを使用すると、cygwinパスが自動的に解決されます。また、cygwin-linux-folder-structureを使用するすべての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)
cmder (またはscpとsshを含むmsysgit/mingw)を使用している場合は、単純なpythonスクリプトを記述しました。ここにあります:- https://Gist.github.com/ceilfors/fb6908dc8ac96e8fc98
使用例:python ssh-copy-id.py user @ remote-machine。
スクリプトの実行時にパスワードが要求されます。
実際、パスに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
次の手順で実行できます。
ステップ-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]
ステップ-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
Windowsバージョンのssh-copy-idがGitHubにあります: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist