デフォルト以外のIDファイルの場所を使用したパスワードなしのSSH


16

スタートアップスクリプトの一部として、いくつかのgnome-terminalウィンドウを自動的に開く必要があり、それらのターミナルの1つが自動的に送信します。

ssh user@192.168.1.3

これに関する制限は、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 user@192.168.1.3

サーバーのパスワードを尋ねた後、キーを正常に追加しました。ただし、「ssh user @ IP」でログインしようとすると、パスワードの入力を求められました。

私が知っている限り、リンクされた指示に正しく従ったので、何かが足りないか、または既存の構成がこれを機能させるのを妨げていますか?

どちらのシステムも18.04とopensshを使用します。


だから私はSSHコマンドを送信するときに.pubファイルの場所を指定する必要がありますか?
-hiigaran

ファイルを整理する方法が少し異なるため、デフォルト以外の場所がありますが、皆さんは大いに助けてくれました。ありがとう。それを私が受け入れることができる答えにしてください。
-hiigaran

回答:


35

最初に失敗したのと同じ理由、ssh-copy-idつまり、IDファイルにデフォルト以外の場所を選択したために失敗します。

コマンドに追加することで、同じ方法で解決でき-i /home/user/ssh/keys/server1keyますssh-クライアント側が秘密鍵ファイルの場所を必要とすることに注意してください。

から 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

1
構成ファイルにはインデントが必要だといつも思っていましたが、そうではないようです。説得力があります。
スパイダーボリス

~/.ssh/configOpenSSHを使用している人は誰でも持っている必要があります/etc/ssh/ssh_config。そうでなければ、OpenSSHはシステム全体のデフォルトを使用します。誰かが役立つと思う場合は、ssh_configのmanページを読む時間がないかもしれないユーザーのための出発点として、ビルド済みのssh_configをGitHubにしばらくアップロードしました
-JW0914

@ JW0914それは半分しか真実ではありません:の個々の値~/.ssh/configはglobalの値を上書きssh_configしますが、ファイルを持っているだけではシステム全体の設定は無効になりません。
セバスチャン・スターク

@SebastianStark多分、システム全体の設定が無効になるとは言わなかったので、私のコメントを読み違えたのでしょう。私が述べたことは、事実上100%正確でした。
JW0914

2

ssh-copy-id失敗するもう1つの理由は、キーがSSHエージェントに追加されていないことです。

まず、ssh-agent実行されているかどうかを確認して開始します。

eval "$(ssh-agent -s)"

プロセスIDを取得した場合、キーを追加できます。

ssh-add -k /home/user/ssh/keys/server1key

-kあなたがキーチェーンにキーを追加します。

キーが追加されているかどうかを確認するには:

ssh-add -l

ssh-copy-id これで動作するはずです。


-1

これがあなたのために働くことを願っています。 "sshpass -p yourpassword"それは自動的にリモートホストにログインします。

[root @ localhost .ssh]#sshpass -p password123 ssh -l root localhost


-1

2つのコマンドを実行するだけです。

ssh-keygen
ssh-copy-id

長い答え:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

その後:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.