パスワードを入力せずにWindowsからLinuxにssh/scpを使用しようとしています。
これは私がやったことであり、うまくいかないようです:
id_rsa.pub
およびid_rsa
として保存しました~/.ssh
にコピーしました~/.ssh/authorized_keys
にid_rsa.pubを追加ssh
しようとしましたが、それでもパスワードを入力する必要があります何か不足していますか?
Pageant が必要です。
ビデオを見るPuTTYとPageantを使用したパスワードなしのログイン。またはブログ投稿方法:PuTTYを使用したパスワードなしのSSH認証。
Plink(PuTTYの一部)を試す
plink -v [email protected] -pw yourpw "some linux command"
SSH鍵認証のセットアップは少し難しい場合があります。拠点をすべてカバーしているようですね。多くの場合、油断しないでください。.ssh
ディレクトリとそのコンテンツは、自分が所有し、自分だけが読み取り/書き込み可能であることを確認する必要があります。
これを必ず実行してください(すべての.ssh
ディレクトリで):
chmod -R 700 on ~/.ssh
それが機能しない場合は、ssh
コマンドに-v
を追加して詳細ロギングをオンにします(詳細度を高めるために最大3つの-vs
sを追加できます)。
私はこれを使いました:
c:\> type c:\users\my_name\.ssh\id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"
私はあなたのキーがパスワードで保護されていないと想定しています、そしてあなたが得ているものはあなたのキーのパスワードの要求ではありません。
〜/ .sshはWindows側のPuTTYでは使用されず、PuTTYにはデフォルトの秘密鍵設定がありません。 cygwinなどのコマンドラインsshクライアントを使用している場合は、家の外に.sshディレクトリを作成するとうまくいきます。 PuTTYから、セッションを構成して保存する必要があります。
PuTTY構成ダイアログから、接続->データを確認し、自動ログインユーザー名フィールドに入力します。次に、接続-> ssh-> authに移動し、秘密鍵を正しく設定します。次に、セッションダイアログに戻り、このセッションを保存します。必要に応じて、ホスト名を設定することもできます。
保存したセッションを取得したら、「PuTTY -load "savedsession"」を使用できます。
必要なのは、クロスプラットフォームのssh
コマンドラインツール、ssh-keygen
&ssh-copy-id
。 git for Windowsにはそれらが含まれています。
Git-installed bash
Shellからこれを実行します。
#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048
ssh-copy-id -i ~/.ssh/id_rsa.pub $remoteuser@$remotehost
# These two chmod lines are needed on unix platforms, probably not on Windows.
# typically ssh refuses to use a private key file
# if it is less-well protected than this:
chmod 700 ~/.ssh
chmod 640 ~/.ssh/id_rsa
または、PowerShellで次のスクリプトを実行します。
Param(
[Parameter()][string]$keyfile="id_rsa",
[Parameter()][string]$remotehost,
[Parameter()][string]$remoteuser
)
write-Host "# ---------------------------------------------------------------------------------#"
write-Host "# Create an RSA public/private key pair, and copy the public key to remote server #"
write-Host "# #"
write-Host "# https://superuser.com/questions/96051 #"
write-Host "# ssh-from-windows-to-linux-without-entering-a-password/1194805#1194805 #"
write-Host "# #"
write-Host "# ---------------------------------------------------------------------------------#"
write-Host "Keyfile pair will be saved at : ~/.ssh/$keyfile, ~/.ssh/$keyfile.pub"
write-Host "And copied to $remoteuser@$remotehost"
write-Host ""
write-Host "You will need a password for the copy operation."
write-Host ""
if( -not $(ls ~/.ssh) ) { mkdir ~/.ssh }
$sshdir=$(get-item ~/.ssh/).Fullname
#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048 -f "$sshdir$keyfile"
# ssh-copy-id somehow didn't work in Powershell so I called it via bash
bash -c "ssh-copy-id -i ~/.ssh/$keyfile.pub $remoteuser@$remotehost"
# I'm not sure if these two chmod lines work on windows but
# typically ssh refuses to use a private key file
# if it is less-well protected than this:
chmod.exe 700 $sshdir
chmod.exe 640 "$sshdir$keyfile"
この後、パスワードなしのログインはssh
とscp
の両方で機能するはずです。
また、ホームディレクトリの権限を変更する必要がある場合もあります。
chmod 755 ~
これをWindows 7
から正確に行うには、-i
オプションを使用してID秘密鍵を指定します。
ssh -i X:\ win-path\to\private-key [email protected]
リモートホストでは、許可されたキーが/etc/ssh/authorized_keys/remoteuser
にあり、/etc/ssh/sshd_config
にあることを除いて、
#AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
しかし、SSHリモート構成が重要かどうかはわかりません。