SSHエイリアスに使用される「デフォルト」ユーザー名をどのように設定しますか?

SSHエイリアスに使用される「デフォルト」ユーザー名をどのように設定しますか?

現在のユーザー名とは異なるユーザー名を「デフォルト」に設定するエイリアスを設定したいと思います。このように:

$ echo $USER          # outputs kamil
$ alias myssh='ssh -o User=somebody'   # non-working example of what I want to do
$ myssh server        # Uses somebody@server - all fine!
$ myssh root@server   # I want it to use root@server, but it does not. It connects to `somebody@server`!

# Easy testing:
$ myssh -v root@localhost |& grep -i 'Authenticating to'
debug1: Authenticating to localhost:22 as 'somebody'
#                                          ^^^^^^^^ - I want root!

上記のコードは機能しません。ユーザーroot@server覆われた合格-o User=somebody。私が一緒にできること:

myssh() {
   # parse all ssh arguments -o -F etc.
   if [[ ! "$server_to_connect_to" =~ @ ]]; then    # if the use is not specified
        # use a default username if not given
        server_to_connect_to="somebody@$server_to_connect_to"
   fi
   ssh "${opts[@]}" "$server_to_connect_to" "${rest_of_opts[@]}"
}

ただし、サーバー名を抽出してユーザー名を追加するには、関数のすべてのSSHパラメータを解析する必要があります。解決策は修正して~/.ssh/config追加することですHost * User somebody。しかし、私はコンピュータにいます。ホームディレクトリへの書き込み権限がありません。(実際にはホームディレクトリがまったくありません)設定ファイルを変更することはできず、通常の操作をssh上書きしたくありません。

変更なしでサーバーに接続するための「デフォルトの上書き可能」ユーザーを指定する簡単なソリューションはありますか~/.ssh/config

ベストアンサー1

エイリアスを使用せずにSSHクライアントのみを構成してください。編集(または存在しない場合は作成)~/.ssh/configし、次の行を追加します。

Host rootServer
HostName server_to_connect_to
User root

Host userServer
HostName server_to_connect_to
User somebody

ファイルを保存すると、次に接続して次にssh rootServer接続を実行できるようになります。rootssh userServersomebody

おすすめ記事