以下のように *nix サーバー間で SFTP を設定しています。
次のコマンドを実行して、送信するサーバーに公開鍵を生成します。
[user1@server1] $ /usr/local/bin/ssh-keygen -t rsa -b 1024
次に、「id_dsa.pub」ファイルを
/home/remote_user1/.ssh/authorized_keys
リモートシステムserver2のファイルにコピーします。サーバー2に接続する:
$ sftp remote_user1@server2
その後、ハンドシェイクを完了するためにパスワードを求めるメッセージが一度表示され、その後のすべてのSFTP接続は直接接続されます。
しかし最近、他のチームは初期ハンドシェイクなしで私たちのサーバーに直接接続できました。通常、私はremote_user1のハンドシェイクパスワードを提供する必要がありました。
それでは、どの設定変更(もしあれば)でパスワードなしでハンドシェイクを完了できますか? SFTPハンドシェイクプロセスをよりよく理解するのに役立つ可能性があるリンクも非常に役立ちます。このトピックに関する多くの情報が見つからないためです。
答え1
私はSSHでそのような「ハンドシェイク」プロセスを知りません。ただし、説明した手順では、SSHに認証にキーを使用するように指示したように見えないため、id_dsa
パスワード認証に置き換えられます。パスワードを提供すると、クライアントで実行されている一部のパスワードまたはキーキャッシングデーモンはその情報を保存し、後続の接続で再利用できますか?
あなたが見ているのがこれである可能性はありますか?
id_dsa
その場合は、リモートサーバーがその公開鍵を知って認証に使用できるようにする場合は、SSHに認証に使用するように指示します。
OpenSSHのマニュアルページは次のように言います:
-i identity_file Selects a file from which the identity (private key) for RSA or DSA authentication is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2. (...)
Solarisが似ている場合、SSHは./id_dsa
。
答え2
わかりましたが、権限を誤って設定して.ssh
資格authorized_keys
情報を入力する必要がありました。
~/.ssh
ディレクトリには権限700
または権限があります755
が、775
他のユーザーはファイルの内容にアクセスできませんauthorized_keys
。他のユーザーにファイルへの書き込みアクセス権を付与すると、セキュリティポイント全体が失われます。
~/.ssh/authorized_keys
400
ファイルには権限(ユーザーのみ読み取り可能)または権限600
(ユーザーのみ書き込み可能)があります。