SSH設定:デフォルトのユーザー名を上書き


271

ssh私のユーザー名がどうあるべきかを知るように設定することは可能ですか?

デフォルトでは現在のユーザー名を使用しますが、私の場合は正しくありません。

貸し出しのラップトップloanerを使用していsshて、ユーザー名はbuckですが、ユーザー名はであると伝えたいのですが。

ボーナスポイント:自宅のユーザー名はbgolemonです。ホストごとにユーザー名を設定できればさらに良いでしょう。


3
Stack Overflowは、プログラミングと開発に関する質問のためのサイトです。この質問はプログラミングや開発に関するものではないため、トピックから外れているようです。ヘルプセンターで、どのようなトピックについて質問できますかをご覧ください。おそらく、スーパーユーザーまたはUnix&Linux Stack Exchangeのほうがよいでしょう。また、Dev Opsに関する質問
— jww 2017年

3
これはとても良い質問です!
— Nicolas S.Xu 2018

ここで受け入れられた回答は、スーパーユーザーの回答よりも高品質です。グローバル(デフォルト)ユーザーディレクティブの使用とコメントの追加により、ディレクティブの優先順位が明確になります
— Rondo

回答:


449

configinside というファイルを作成します~/.ssh。ファイル内に追加できます:

Host *
    User buck

または追加

Host example
    HostName example.net
    User buck

2番目の例はユーザー名を設定し、ホスト名固有ですが、最初の例はユーザー名のみを設定します。そして、2つ目を使用する場合、使用する必要はありませんssh example.net。ssh example十分でしょう


134
それはおそらく指摘する価値がありman ssh_configます:Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.したがって、Host *セクションはおそらく最後に行くべきです。
— quodlibetor 2013

9
構成ファイルは上から下に処理され、各フィールド(ユーザー、ホスト名...)に入力され、複数のホストディレクティブが一致する場合は繰り返しフィールドをスキップすることに注意してください。あなたが定義した場合Host *、User jdoe一番上にして、定義Host example、HostName abc.example.com、User root、しようとすると、ssh example入力した場合と同じになりますssh jdoe@abc.example.com。sshのデフォルト(つまりUser root)を定義するには、設定ファイルの最後にHost *ディレクティブが必要です。
— mr.b 2013年

17
また、.ssh / configのchmod 600を忘れないでください
— Sven

サーバーがアクセス可能なホスト名が複数ある場合(または複数のサーバーに同じデフォルトのユーザー名が必要な場合)、最初の行をに変更して、その行をHost server1.local example.net *.example.org削除する必要があることに注意してくださいHostName。
— Lèseはmajesté

44

借りたコンピュータや共有したコンピュータなど、sshを数回しか実行しない場合は、次のことを試してください。

ssh buck@hostname

または

ssh -l buck hostname

1
おかげで、私はすでにこれに精通しています。buck @ hostを常に指定する場合、buck @ hostを指定するのは冗長です。この情報を構成ファイルで表す方法を見つけようとしています。
— bukzor 2012

1
エイリアスsshhostname = 'ssh buck @ hostname'のような単純なものを考えましたか?
— gpojd 2012

はい、あります。Learath2の答えはまさに私が探していたものです。これを自分のdotfilesリポジトリにチェックインして、二度と心配する必要はありません。
— bukzor 2012

ユーザー名がクライアント環境ごとに異なるさまざまなクライアントのマシンに接続するため、エイリアスルートを取得しました。私が想定している別のアプローチは、クライアントごとにsshと関連設定を設定するための異なるローカルシェル環境を持つことです。または、クライアントごとのVM。
— Nick Spacek 2013年

6

man ssh_config 言う

ユーザー

ログインするユーザーを指定します。これは、異なるマシンで異なるユーザー名が使用されている場合に役立ちます。これにより、コマンドラインでユーザー名を指定することを覚える必要がなくなります。


1
この場合の「ID」は、「パスワード」の通常の使用法と同じです。これはあなたを認証するデータですが、あなたが誰として認証しようとしているのかを特定する助けにはなりません。
— bukzor 2012

おっとっと。そこにもユーザー設定があります。
— nes1983

0

ショートカットを使用できます。ホームディレクトリに.bashrcファイルを作成します。そこに、以下を追加できます。

alias sshb="ssh buck@host"

エイリアスを端末で使用できるようにするには、端末を閉じて開くか、次のコマンドを実行します。

source ~/.bashrc

その後、次のように入力するだけで接続できます。

sshb

1
これは1つの特定のホストに最適ですが、1兆個もの異なるサーバーに接続し続けるので、これはかなり役に立ちません。むしろ.ssh/config、適切な設定でセットアップします。私は*ワイルドケアを探しに来ました(そしてそれが一番下にあるべきだと知りました)。
— mazunki

0

ssh呼ばれるあなたの設定ファイルをインターフェイスするRuby gemがありますsshez。

あなたがしなければならないすべてはsshez <alias> username@example.com -p <port-number>であり、それからあなたはを使用して接続することができますssh <alias>。また、を使用sshez listしてエイリアスをリストしたり、を使用して簡単に削除したりできるので便利ですsshez remove alias。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.