web-dev-qa-db-ja.com

ファイルの転送SSHSCPエラーメッセージ: 'Stdin:is not a tty'

Macbook SSHターミナルを使用して、RSAキーペアを生成し、承認された権限でリモートid_rsa.pubをアップロードしました。リモートのApache Webサーバーに接続できます。私は作成、開く、移動、変更することができ、予備検査でWebサーバー上のファイルを管理でき、問題はありません...そしてエラーメッセージを生成しません。

驚いたことに、デスクトップからリモートサーバーにフォルダやドキュメントをscpできません。また、リモートサーバーからデスクトップにフォルダーやドキュメントをscpすることもできません。エラーメッセージを受け取るたびに:

stdin:ttyではありません

リモートWebサーバーとの間のscpコマンドは、絶対ファイルまたは相対ファイルの場所の参照では機能しません。

私の標準構文は次のようになります。

ローカルホストから:

scp -rp ~/Desktop/foldername [email protected]:~/public_html

リモートホストから:

scp -rp [email protected]:~/public_html/foldername ~/Desktop/

stdin: is not a ttyエラーメッセージに問題があるようです。

どうしたの?

このエラーがファイル転送を妨げている場合、どうすればstdin: is not a ttyを解決できますか?

6
user2217265

これは、ターゲットサーバーのログインスクリプトの1つがstty...を使用して端末の特性を設定しているためです。 ttyがない場合、つまりscpに接続すると、コマンドは失敗します。

解決策は、sttyを保護して、インタラクティブセッションが存在する場合にのみ実行されるようにすることです。これを行う方法はいくつかあります。 bash/shタイプのシェルの例を次に示します。

醜い:

stty ... >/dev/null 2>&1

私のために働く:

test -n "$PS1" && stty ...

推奨 SEの他の場所

# Check for a bash login Shell
case $- in
  *i*) stty ... ;;
esac
6
roaima

OSX sshd実装で問題になるかどうかはわかりませんが、システムによっては、ttyがない場合、〜/規則を含む暗黙のホームディレクトリが拡張されず、予期しない結果が生じる場合があります。確かなことではありませんが、〜/構文ではなくフルパス名を試してください。

2
MelBurslan

これは、.bash_profileを読み込もうとしたときに発生します。追加した

[-z "$ {PS1}"] && return;

上部でそれを修正しました

0
Kevin Huntly