web-dev-qa-db-ja.com

Windowsのssh-copy-idに相当するものはありますか?

Windowsで利用可能な同等またはssh-copy-idのポートはありますか?つまり、WindowsでローカルマシンからリモートサーバーにSSHキーを転送する簡単な方法はありますか?

それが役立つ場合、私はPageantと Kitty (PuTTYの代替)をすでに使用しています。

56
Matt V.

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でスクリプトを作成するのはかなり難しくなりますが、確かに可能です。

27
Zoredache

これらの答えは私を助けませんでした。本当にクレイジーなスクリプトは必要ありませんでした。クライアントマシンで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"

20
Augie Gardner

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は、アップロードした公開鍵のファイル名です。

16

Zoredacheの答えに触発されて、Windowsバージョンのスクリプトをたくさん作成しました。しかし、それらはすべてplinkに依存しています。こちらをご覧ください

https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/

私はまた別の答えに従って使用できるwinscpスクリプトを持っています。 :) readmeからの抜粋:

これまでに試みた方法:

  • DOS(.cmd)-成功
  • VBS(.vbs)-成功
  • Powershell(.ps1)-成功
  • mremoteNG(拡張アプリ)-成功
    • ホストを選択し、右クリックして外部ツールを選択し、スクリプト名を選択します
  • WinSCPスクリプト(.bat)-成功
    • # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]"
5
Vijay

Windowsにssh-copy-idがない場合は、サーバー自体で実行できます。

  • PuTTYgenで、秘密鍵(.ppk)をロードします。
  • ボックスのコンテンツ公開キーをOpenSSHのauthorized_keysファイルに貼り付けてクリップボードにコピーします。
  • それをお気に入りのエディターに貼り付けます(Windowsのメモ帳でできます)。
  • 内容を.pub拡張子の付いたファイルに保存します。
  • .pubファイルをサーバーにアップロードします。
  • PuTTYなどのSSHクライアントを使用してサーバーにログインします。
  • サーバータイプ:

    ssh-copy-id -i mykey.pub username@localhost
    

Windowsでは、ssh-copy-idスクリプトには Git for Windows が付属しています。したがって、Git for Windowsを使用している場合は、ローカルで使用できます。


これを手動で実行したくない場合は、 WinSCP 5.15を使用できます。公開鍵認証を設定できます。
ツールを使用> SSHの[サーバーに公開鍵をインストール]ボタン> [WinSCP詳細サイト設​​定]ダイアログの[認証]ページ

enter image description here

(WinSCPの作成者です)

5
Martin Prikryl

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の内容がリストされます。

5
Deian

私が行ったこと、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)
0
BananaAcid

cmder (またはscpとsshを含むmsysgit/mingw)を使用している場合は、単純なpythonスクリプトを記述しました。ここにあります:- https://Gist.github.com/ceilfors/fb6908dc8ac96e8fc98

使用例:python ssh-copy-id.py user @ remote-machine。

スクリプトの実行時にパスワードが要求されます。

0
ceilfors

WindowsのGitに含まれているSSHのPowershellバージョン

実際、パスに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
0
Fab

次の手順で実行できます。

ステップ-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
0
GANESH

Windowsバージョンのssh-copy-idがGitHubにあります: https://github.com/zhengyi-yang/ssh-copy-id/tree/master/dist

0
user393933