4

常にリモート サーバーにログインして、あらゆる種類の作業を行う必要があります。私は Mac を使用していますが、そのために長いコマンドを入力する必要があります。

ssh -i ~/key.pem ubuntu@255.255.255.255

毎日コマンドを入力せずにリモートサーバーにログインする最も簡単な方法は何だろうと思っています。

便利なアップルアプリも大歓迎

更新しました:

1> Matt Bryant の回答に感謝します。~/.ssh/config (デフォルトでは存在しません) を

Host <ShortName>
    User <UserName>
    HostName <HostIP>
    IdentityFile <KeyPath>

次に、このコマンドを入力して、ホストのフルネームとキーのフルパスを入力しないようにすることができます。

ssh <ShortName> 

2>pemキーを保存する方法、またはpemキーがない場合にパスワードを入力しないようにする方法を知っている人はいますか?

4

2 に答える 2

5

~/.ssh/config ファイルを使用します。以下を追加してみてください。

Host server                                                                                                  
    User ubuntu
    HostName 255.255.255.255

これにより、 を使用してログインできるようになりますssh -i ~/key.pem server。ssh 構成を調べると、ssh エクスペリエンスを簡素化および強化するための設定が他にも多数あります。

于 2013-09-07T17:59:05.833 に答える
1

こんにちは B MR W はい、これはよく出てくるので、expect スクリプトを投稿します。

E2A 手順は Linux 用です Mac には期待があります https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/expect.1.html スクリプトをいじる意味があるかもしれませんMacの基準は、私がそれについて十分な知識を持っていないことを期待していますが、原則として、以下のプロセスを見てみるとうまくいくはずです

ssh-copy-id またはスクリプトのどちらに興味がありましたか?

スクリプトを実行するには、次のことが必要です

sudo-apt-get install expect or 
sudo yum install expect

インストールしたら

これは典型的なスクリプトです:

#!/usr/bin/expect -f


set force_conservative 1  
if {$force_conservative} {
        set send_slow {1 .001}
        proc send {ignore arg} {
        sleep .001
                exp_send -s -- $arg
        }
}

;# Validate user input - make sure all fields required are given 
if {$argc >= 1} {
    ;# Setting  password
    set user "MYUSER";
    set supass "MYPASSWORD"

    set host [lindex $argv 0]
  #     set command1 [lindex $argv 2]

   set prompt "(:|#|%|>|\\\$|% |# |> |\\\$ )"
   set prompt1 "(>)"
   set timeout -1
   ;###############################################################

   ;#connect to specified host given by addstaff or globalstaff.
   spawn ssh $user@$host
   expect { 
        "*word:*" {}
        "*(yes/no)?*" {
                      send - "yes\r" 
                  expect "*word:" { }

                  } 
       }          

   send  - "$supass\r"
  expect eof exit -re $prompt

   send -  "sudo bash\r"
   expect   {
                 "*word:*" {
                         send  "$supass\r"
                         expect  eof exit -re $prompt
                 }
        "*" {  
              expect eof exit -re $prompt
        }

   }

    send  - "whoami\r"
        expect eof exit -re $prompt

    interact 

    ;#send  - "$command\r"
    ;#  expect eof exit -re $prompt

    ;#Logout of current ssh session
    ;#send  - "exit\r"
    ;#expect eof exit -re $prompt

    ;#send  - "exit\r"
    ;#expect eof exit -re $prompt


} else {
  send - "echo Sorry require user host command \n\n\r";
  exit
} 

送信されていないコマンドをコメントアウトしたことに気付いた場合は、対話モードを使用して、パスワードなしで実際にログインできるようにします。スクリプトの上部にユーザーパスワードが定義されています...ログインしたら、入力したとおりに入力します通常のsshごとに

これが私がローカルで実行しているところです:

 whoami
myuser
./ssh-connection.exp localhost
spawn ssh myuser@localhost
myuser@localhost's password: 
Welcome to Ubuntu 12.04.2 LTS (GNU/Linux XXXX)

 * Documentation:  https://help.ubuntu.com/

Last login: Sat Sep  7 20:19:53 2013 from localhost
sudo bash
This is BASH 4.2- DISPLAY on localhost:0.0

Sat Sep  7 20:25:09 BST 2013
whoami
[20:25 myuser@myuser-DP ~] > sudo bash
whoami
This is BASH 4.2- DISPLAY on localhost:0.0

Sat Sep  7 20:25:09 BST 2013
[20:25 myuser@myuser-DP ~] > whoami
root
[20:25 myuser@myuser-DP ~] > whoami
root

スクリプト内では sudo bash も実行されるため、localhost に再接続され、root になります。

于 2013-09-07T19:26:58.330 に答える