web-dev-qa-db-ja.com

ターミナルを介してアクセスするために頻繁に使用されるSSHホストを保存する方法は?

私は頻繁にsshに入るホストを持っています。しかし、何度も入力したくありません。これには環境変数を使用する必要がありますか、それとももっと良い方法がありますか?

単一のbashセッションの外部に存在する、頻繁に使用される変数を保存するための一般化されたソリューションは問題になりません。

25
Vaish MK

環境変数は、シェルで開始する複数のコマンド/プロセスに情報を伝達するためのものであり、その環境でコマンドまたはプロセスがexpectになるように処理します。通常、このような変数には、頻繁に使用されるオプションをLESSページャーに渡すless変数などのオプションが含まれます。非標準の場所でPerlモジュールを検索する場合は_Perl5LIB_、_LC_LANG_ toコマンドが出力に使用する言語を伝えます。

URLが特定のコマンドで独自に使用する場合は、_alias au='firefox https://askubuntu.com_などのエイリアスまたはopen_url(){ firefox "$@" }などの関数を使用して、コマンドラインで位置パラメーターとして指定した任意のURLを開きます。関数。

sshなどの特定のケースでは、設定ファイルで接続プロパティを定義できます Lekensteynの回答

  1. 以下の内容で_~/.ssh/config_ファイルを定義します

    _Host meh
        HostName meh.example.com
        User admin
        Port 1234
        IdentityFile ~/.ssh/id_rsa
    _
  2. _ssh meh_を使用して、構成ファイルを使用してホストに接続します。

44

また、エイリアスを作成することをお勧めします。

ホームディレクトリの.bashrc(または.profileまたは同様のファイル)を編集します。次のようないくつかのエイリアスを追加します。

alias go='ssh url1'
alias go2='ssh url2'

次に、再ログイン/再接続して、goまたはgo2を入力します。

14
Lewis B

Sergiy'sLewis's の回答を組み合わせて最大にすることをお勧めします 怠惰 効率:

最初にsshのホストエントリを作成します。

定義~/.ssh/config以下の内容のファイル

    Host meh
        HostName meh.example.com
        User admin
        Port 1234
        IdentityFile ~/.ssh/id_rsa

ssh mehは機能しますが、それでもかなり長い可能性があります。オートコンプリート(ssh [空白]の後)がありますが、それでも入力するのはひどいです。

aliasも定義しましょう:

.bashrcローカルホームディレクトリ。次のようなエイリアスを追加します。

alias meh='ssh meh'

これで、ターミナルウィンドウでmehと入力するだけで「meh.example.com」に接続できます。 「meh」の代わりに長い文字列を使用したい場合は、実際に[Tab]キーを使用してオートコンプリートできます。

または本当に怠惰な場合は、単一の文字をエイリアスとして定義します。

alias m='ssh meh'

したがって、mと入力してEnter/Returnキーを押すと、ssh接続がすぐに開始されます!

7
Robert Riedl

さらに別のオプションは、シェルの履歴機能を使用することです。 bashでCtrl-rを押して、その場所に最後にsshしたときの一意の部分文字列を入力できます。一意の部分文字列がない場合は、珍しい部分文字列として最も適したものを使用し、Ctr-rを押すまで履歴エントリを繰り返し参照できます。たとえば、Ctrl-rと「サル」または「コードモンキー」または「オデモン」または「コン」を入力すると、次のようになります。

ssh [email protected]

最後から、そしてうまくいけば、あなたがその全体をタイプしたときだけ。

シェルの履歴機能を使用すると、長いコマンドを2回以上入力する必要はありません。

5
JoL

私は通常.shにはsshコマンドが含まれています。例えば:

# file name: mywebsite-live.sh
ssh [email protected] # or whatever the domain is.

そして、それを実行するには、単に./mywebsite-live.sh

私はそれがおそらくかなり安っぽい解決策であることを理解していますが、それは私にとってはうまくいき、希望は他の誰かにとってもうまくいくかもしれないということです。

3
PrintlnParams