
私は Linux (Debian Stretch) サーバーに root としてログインしています。ssh クライアントを root として実行すると、ssh クライアントは、/root/.ssh/
すべての ssh 構成およびキー ファイルの場所として、次の場所ではなくを使用することを主張しているようです~/.ssh
。
$ id
uid=0(root) gid=0(root) groups=0(root)
$ export HOME=/srv/scratch/user
$ cd ~/.ssh
$ pwd
/srv/scratch/user/.ssh
$ ssh -vvv [email protected]
OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2t 10 Sep 2019
debug1: Reading configuration data /root/.ssh/config
debug1: /root/.ssh/config line 3: Applying options for example.com
debug1: Reading configuration data /etc/ssh/ssh_config
... more lines that never mention /srv/scratch/user/.ssh ...
ssh クライアントが.ssh
のディレクトリを使用しないのはなぜですか/srv/scratch/user
?
答え1
export HOME=/srv/scratch/user
ssh
HOME
ユーザーのホームディレクトリを見つけるために環境変数を使用しません。getpwuid()
そして、そこから返されたホーム ディレクトリを使用します。特定のシステムがユーザー情報を保存している場所getpwuid()
から、またはそこからユーザー情報を返します。/etc/passwd
sshに別の設定ファイルを読み込ませるには、-F
オプション:
-Fconfigfile
代替のユーザーごとの設定ファイルを指定します。コマンドラインで設定ファイルを指定すると、システム全体の設定ファイル (/etc/ssh/ssh_config) は無視されます。ユーザーごとの設定ファイルのデフォルトは ~/.ssh/config です。
SSHキーを指定するには-i
:
-私identity_file
公開鍵認証のアイデンティティ (秘密鍵) が読み込まれるファイルを選択します。デフォルトは ~/.ssh/id_dsa、~/.ssh/id_ecdsa、~/.ssh/id_ed25519、および ~/.ssh/id_rsa です。アイデンティティ ファイルは、設定ファイルでホストごとに指定することもできます。複数の -i オプション (および設定ファイルで指定された複数のアイデンティティ) を持つことができます。CertificateFile ディレクティブによって証明書が明示的に指定されていない場合、ssh は、アイデンティティ ファイル名に -cert.pub を追加して取得したファイル名から証明書情報をロードしようとします。
次のように「~」を使用してファイル名を指定するコマンドを実行する場合は注意してください。
ssh -F ~/some/config/file ...
そうすると、「~」は ssh ではなくシェルによって解釈されます。