スタートアップスクリプトの一部として、いくつかのgnome-terminalウィンドウを自動的に開く必要があり、それらのターミナルの1つが自動的に送信します。
ssh [email protected]
これに関する制限は、SSH接続を完了するためにパスワードを入力する必要があることです。
私がやりたいことは、スクリプトがコマンドを開始し、接続を完了することです。その範囲で、受け入れられた答え ここ に概説されている指示に従うことを試みました。
接続したいシステムから実行しました:
ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key
その後、パスフレーズの入力を求められました。私はそれが何のためにあるのかわからなかったので、これを空にしておきました。そのため、使用するたびに上記のパスフレーズでロックを解除する必要があると思いました。
上記のリンクの手順を続けて、次を実行して受け取りました。
ssh-copy-id user@IP
ERROR: No identities found
クイック検索の結果、デフォルトの保存場所ではないため、キーの場所を指定する必要があることが判明したため、次の点を修正しました。
ssh-copy-id -i /home/user/ssh/keys/server1key.pub [email protected]
サーバーのパスワードを尋ねた後、キーを正常に追加しました。ただし、「ssh user @ IP」でログインしようとすると、パスワードの入力を求められました。
私が知っている限り、リンクされた指示に正しく従ったので、何かが足りないか、または既存の構成がこれを機能させるのを妨げていますか?
どちらのシステムも18.04とopensshを使用します。
ssh-copy-id
が初めて失敗したのと同じ理由で、つまり、IDファイルにデフォルト以外の場所を選択したために失敗します。
-i /home/user/ssh/keys/server1key
をssh
コマンドに追加することにより、同じ方法で解決できます。クライアント側ではprivateキーファイルの場所が必要であることに注意してください。
man ssh
から
-i identity_file
Selects a file from which the identity (private key) for public
key authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.
または、次の行に沿って、ホストの~/.ssh/config
ファイルエントリを作成することもできます。
Host somename
Hostname 192.168.1.3
User user
IdentityFile /home/user/ssh/keys/server1key
Ssh-copy-idが失敗するもう1つの理由は、キーがsshエージェントに追加されないためです。
Ssh-agemtが実行されている場合、最初にチェックして開始します
$ eval "$(ssh-agent -s)"
プロセスIDを取得したら、キーを追加できます
$ ssh-add -k /home/user/ssh/keys/server1key
-kで、キーチェーンにキーを追加します
キーが追加されているかどうかを確認します
$ ssh-add -l
Ssh-copy-idが動作するはずです。