LoginSignup
30
24

More than 3 years have passed since last update.

Windowsでssh-copy-idっぽいことをしたい

Last updated at Posted at 2019-07-13
  • ~/.ssh/id_rsa.pub(例:C:\Users\ユーザー名\.ssh\id_rsa.pub)として公開鍵がすでに生成されている
  • 送付先サーバーはSSH接続でパスワード認証が有効になっている

以上の条件を満たしてPowerShellで以下のコマンドを実行します。
見やすくするために ` で改行しています。1行ずつではなく以下の5行をまとめてご使用ください。

cat ~/.ssh/id_rsa.pub | ssh ${user}@${host} `
" `
mkdir -p ~/.ssh && chmod 700 ~/.ssh && `
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys `
"
ssh ${user}@${host}
の部分は適宜変更してください。
例:ssh user@123.456.78.99

実行後パスワードが求められるので入力します。

もう一度

ssh ${user}@${host}

でパスワード入力が求められずにSSH接続できれば成功です。
パスワード認証の設定を有効にした場合は無効化しておくのをお忘れなく。

環境

  • 公開鍵送付元

    • windows10 home
    • PowerShell 5.1
    • OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
  • 公開鍵送付先

    • centos7.4

解説

cat ~/.ssh/id_rsa.pub

powershellのcat(Get-Contentのエイリアス)で公開鍵を取得します。

mkdir -p ~/.ssh && chmod 700 ~/.ssh

mkdirの-pオプションで~/.sshディレクトリが存在しなければ新規作成、新規作成した場合は~/.sshの権限を700に変更します。

cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

authorized_keysを新規作成して公開鍵を書き込み、もしくはauthorized_keysが存在していれば追記します。
新規作成された場合は権限が644となっており他のユーザーから書き込みができないのでSSHで接続するには問題ありませんが、一般的な600に変更しておきます。

おまけ SSHパスワード認証を無効化するコマンド

ssh ${user}@${host} `
" `
sed -i 's/PasswordAuthentication.*/PasswordAuthentication no/g' /etc/ssh/sshd_config && `
systemctl restart sshd `
"

sedでPasswordAuthenticationをPasswordAuthentication noに書き換えたあとsshdを再起動しています。

参考

Is there an equivalent to ssh-copy-id for Windows?

mkdirでディレクトリが存在しない時だけディレクトリを作成する。

それ PowerShell でできるよ

OpenSSHのバージョンが知りたい

Disable PasswordAuthentication and Enable PubkeyAuthentication on Sakura VPS.

30
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
24