助け合いフォーラム

LinuC

LinuC Lv1-102(Ver10.0)
問題ID : 15769
問題を開く
sshコマンドのオプションで、公開鍵方式のユーザ認証に使用する秘密鍵のファイルを指定するものはどれか。(2つ選択)

この問題はプレミアムコンテンツです。

上に戻る

sshコマンドのoオプションについて

公開日 2022/10/06

sshのoオプションを指定する際、解説欄には
「ssh_configで接続先ホストのエントリで「IdentityFile 秘密鍵ファイル」を設定します。ssh_configの設定値はsshコマンドに直接「-o オプション名」を指定しても有効になります。」とありますが、
参考欄の画像では「~/.ssh/config」ファイルに「IdentityFile 秘密鍵ファイル」を設定していると思うのですがどちらが正しいのでしょうか?

2022/10/06 22:43

質問の意図を読み違えてたら申し訳ないですが。。
sshコマンドでオプションを指定する方法には3つあって、

sshコマンドは、以下の順で取得した設定に基づいて動作します。

  1. コマンドラインオプション
  2. ユーザ毎の設定ファイル(~/.ssh/config)
  3. システム全体の設定ファイル(/etc/ssh/ssh_config)

問題15769では 1 の方法(-o IdentityFile=~/mykey~)で、
参考では 2 の方法(IdentityFile ~/.ssh/~)で
指定しているということではないでしょうか。


コメント

P Pnt306_011

2022/10/07 09:38

解答ありがとうございます。 1のコマンドラインオプション(-o IdentityFile=~/mykey~) で指定する場合でも、システム全体の設定ファイル(/etc/ssh/ssh_config)にあらかじめ記述しておく必要があると思ったのですがそうではないですか?

o ojixii

2022/10/09 19:44

1,2,3 は優先順位の話であって、「システム全体の設定ファイルに記述しておく必要がある」とは書いてないので、記述がなくてもよいのではないでしょうか。 どこにも指定がない場合は、解説にある通り > 鍵のデフォルトの保存先は「\~/.ssh」ディレクトリで、sshコマンドで接続時に秘密鍵ファイルを指定しないと「\~/.ssh」配下の秘密鍵がユーザ認証で使用されます。 になるかと思います。

P Pnt306_011

2022/10/11 10:11

コマンドとして実行する際の説明として、「ssh_configの設定値はsshコマンドに直接「-o オプション名」を指定しても有効になります。」とありますが、「ssh_configの設定値」というのはあらかじめシステム全体の設定ファイル「/etc/ssh/ssh_config」に設定しておくという意味ではないのでしょうか?

a arashi1977

2022/10/11 12:53

私の手元のCentOS 7環境ですが ``` $ grep PRETTY_NAME /etc/os-release PRETTY_NAME="CentOS Linux 7 (Core)" $ cat /etc/ssh/ssh_config | grep -E '^[^#]' Host * GSSAPIAuthentication yes ForwardX11Trusted yes SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE SendEnv XMODIFIERS ``` こんな設定がされている状態で、localhostにsshするときに「パスワード認証(PasswordAuthentication)設定の有無を見ると ``` [staff@centos7 ~]$ ssh staff@localhost staff@localhost's password: Last login: Tue Oct 11 12:49:08 2022 from localhost [staff@centos7 ~]$ exit ログアウト Connection to localhost closed. [staff@centos7 ~]$ ssh staff@localhost -o PasswordAuthentication=no Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). [staff@centos7 ~]$ ``` となります。 何が起きてるかと言うと、/etc/ssh/ssh_configに記載のない設定値であるPasswordAuthenticationはデフォルトではyesとなっている状態で接続しにいってるのですが、未設定の時に意図的に-oオプションで「PasswordAuthenticationを無効」にする指定をすると、パスワード認証できなくてログイン認証時に弾かれるっていうことが起きています。 ojixiiさんがコメントされている通り/etc/ssh/ssh_configに記載されているかどうかは関係ない(正確には、優先度が低いのとデフォルト値のままでよければ記載する必要がない)ので、設定に記載があるかないかは重要ではないと思います。

P Pnt306_011

2022/10/11 14:02

納得できました。 お二方ともご回答ありがとうございました。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?