以前、Linux の SCPファイル転送を自動化させるための、パスワード入力省略方法を掲載しました。
scp でパスワードを記憶させる - good-arrow’s blog
それの Powershell 版です。
Windows 10 オプション機能の OpenSSH クライアントを追加する
Windows 10 で [設定] → [アプリ] → [オプション機能] → [オプション機能を追加する] を開き、
「OpenSSH クライアント」を追加する。
パスワードを記憶させる
Powershell を起動して、以下を実行するだけになります。
{USERNAME}
は接続先のアカウント、{IP_ADDRESS}
は接続先IPアドレスに置き換えてください。
ssh-keygen type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {USERNAME}@{IP_ADDRESS} "mkdir .ssh && chmod 700 .ssh && cat >> .ssh/authorized_keys && chmod 600 .ssh/authorized_keys" username@192.168.x.x's password:(接続先のパスワードを入力)
接続テスト
SSH 接続
ssh {USERNAME}@{IP_ADDRESS}
SCPファイル転送
scp ./test.txt {USERNAME}@{IP_ADDRESS}:~/
解説
単にローカルの $env:USERPROFILE\.ssh\id_rsa.pub
を
Linux側の~/.ssh/authorized_keys
にコピーしている。
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {USERNAME}@{IP_ADDRESS} "mkdir .ssh && chmod 700 .ssh && cat >> .ssh/authorized_keys && chmod 600 .ssh/authorized_keys"
下記の部分は ssh-copy-id
コマンド実行時のアクセス権を厳密に模倣している。
mkdir .ssh #ディレクトリの作成 chmod 700 .ssh #ディレクトリのアクセス権を設定 cat >> .ssh/authorized_keys #authorized_keysを作成 chmod 600 .ssh/authorized_keys #authorized_keysのアクセス権を設定
アクセス権を省略したmkdir .ssh
だけの下記でもいいですが、推奨はしません。
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {USERNAME}@{IP_ADDRESS} "mkdir .ssh && cat >> .ssh/authorized_keys"