Bashスクリプトを介して秘密鍵でSSHを実行することはできません。

Bashスクリプトを介して秘密鍵でSSHを実行することはできません。

まず、これが非常に明白でマイナーな質問であればお詫び申し上げます。私はまだLinux / Unixについて詳しく学んでいます。

ログインするには、SSHと秘密鍵を介したアクセスを必要とするいくつかのサーバーを使用します。したがって、コマンドは次のようになります。

ssh -i /path/to/key.pem [email protected]

私は自分の呼び出しを使用しaccess、私がログインしているサーバーを制御するために背後にあるパラメータのデフォルトのスイッチステートメントのみを持つことができるbashスクリプトを作成しました。たとえば、server1にログインするには、access server1適切なコマンドが実行されます。ssh

質問

電話がssh切れて空の端末だけが残りました。SIGINTCtrl+ C)は許可されておらず、使用するにはターミナルを終了して再開する必要があります。

私が理解したところ、これは秘密鍵に対する権限の問題かもしれません。現在の権限はです600。変更すると、644権限が開いていないというエラーが発生し、ssh試みが終了します。どんな提案がありますか?

答え1

  1. これを行うには、ssh_configbashスクリプトなどのhara-kiriを作成せずにホストエイリアスとキーを指定して保存できます。デフォルトでは、~/.ssh/config次の形式で保存されます。

    Host host1
      Hostname 000.000.000.000
      User user
      IdentityFile /path/to/key.pem
    

    その後、単に電話するだけです。

    ssh host1
    

    到着する、得る000.000.000.000

  2. 本当にやりたいなら効果的なそして、短いショートカットを使用すると、aliasbashスクリプトよりもbashが適しています。

    alias access="ssh -i /path/to/key.pem [email protected]"
    
  3. Bashスクリプトを実際に使用するには、-tt次のオプションを使用してsshがリモートサーバーにTTYを割り当てるように強制する必要があります。

    ssh -tti /path/to/key.pem [email protected]
    

sshより多くのヒントについては、およびマニュアルページを参照してくださいssh_config

答え2

私は通常、サーバーで(仮想化を使用すると仮定し、コンソールを介して)パスワード認証を提供し、キーベースの認証を提供しますssh-copy-id soandso@server。ほとんどの場合、コンピュータの公開鍵を使用してリモートサーバーの秘密鍵を認証します。

公開鍵の標準権限は必要ですが、私が知っている限り、秘密鍵644はそうする必要があります。700問題が公開鍵権限ではないことは確実ですか?

2つのことを確認することをお勧めします。まず、上記のSSH接続文字列を試してから、-vまたは-vvvをオプションとして追加します。これにより、問題がどこにあるかを明確に知ることができます。次に、/etc/ssh/sshd_configサーバーのsshd設定ファイル()を確認し、使用する接続プロトコルが有効になっていることを確認します。これは、次の2行をyesに設定するのと同じくらい簡単です。

RSAAuthentication yes PubkeyAuthentication yes

頑張ってください!

関連情報