2016-07-14 7 views
0

.shファイルを実行する方法を考えるのに苦労しています私のローカルのLinuxマシン上でAWS ec2インスタンスになるリモートのLinuxマシンに接続します。ここ は、私は私のローカルマシン上でやっているものです:私が得るリモートLinuxマシン(AWS ec2インスタンス)上のローカルの.shファイル(ローカルのLinuxマシン上にある)を実行するためのsshの使用方法

ssh -i sample.pem [email protected]_name.amazon.com 'bash -s' < file_to_remotely_execute.sh 

エラーは次のとおりです。

警告:アクセスできないアイデンティティファイルsample.pem:そのようなファイルやディレクトリはありません。 stdinは端末ではないため、疑似端末は割り当てられません。 ホストキーの確認に失敗しました。

Thisが上述のアプローチに到達すると言及された。

+0

警告メッセージは、問題の内容を明確に示しています。存在しないか、現在のディレクトリにないか、または何らかの理由でアクセスできない、識別ファイル 'sample.pem'を提供しています。しかし、なぜ 'ssh'が探すデフォルトのもの(通常' $ HOME/.ssh/')を使うのではなく、明示的なアイデンティティファイルを提供しようとしていますか? – kaylum

+0

{sample.pem}は実際の名前ではありません。本当の名前は別のものです。そのイラストレーションのためだけです。このpemファイルは/ homeディレクトリにあります。なぜアクセスできないのか分かりません。私がpemファイルを明示的に使用しないと、私の許可が拒否されました(公開鍵) –

+0

しかし、pemファイルと同じディレクトリから 'ssh'コマンドを実行していますか?関連する情報を表示している実行ログを提供してください。カレントディレクトリのリストとsshコマンドinvocaitonのようなものです。 – kaylum

答えて

0

可能性のある問題:

  1. PEMファイルが存在しません。
  2. PEMファイルに適切な権限がありません。
  3. ホストは~/.ssh/known_hostsファイルでは許可されていません。

ソリューション:PEMファイルが存在するかPEMファイルのフルパスを与える場所に

  1. ナビゲート。
  2. PEMファイルへのアクセス許可を400sudo chmod 400 /path/to/file.pem)にします。
  3. sshでサーバーにログインし、ホストを許可します。
+0

1. pemファイルが存在します。私は完全なパスでも試してみましたが、2の作業を試みました。許可するために、chmod 400 sample.pemを実行しました。3〜/ .ssh/know_hostsファイルを開いて、自分のリモートサーバーが存在することがわかりました。私は一度ssh経由でリモートサーバーにログインしようとしていて、ssh -i sample.pem [email protected]_name.amazon.com 'bash -s'

+0

Psudo-terminalが必要なシェルファイルに問題があるようです。[この回避策](http://stackoverflow.com/questions/7114990/pseudo-terminal-will-not- stdin-not-a-terminal) –

+0

あなたの参考にしたがって、これをコマンド 'ssh -t -t -i fipmt_server_qatst.pem ec2-user @ pmtserver-1にしました。 qa1tst.cltest.wellmanage.com 'bash -s'

関連する問題