次のようなエラーメッセージが出ます。
Coda2のエラーメッセージ
サーバ “ホスト名” に接続できませんでした。 Unable to extract public key from private key file: Wrong passphrase or invalid/unrecognized private key file format
sftpコマンド試してみる
sshは接続できるので、sftpコマンドで接続したところ同様に接続できませんでした。$ sftp 192.168.33.10 Received message too long 1433626990Coda2のエラーメッセージと違いこちらはなんとなく原因がわかりました。 事前に設定していた.bashrcの内容をコメントアウトしたら無事接続できました。
rvmをコメントアウト
次の1行をコメントアウトしただけです。rvm use 2.1.1さすがにコメントアウトは不便なので、
sftp接続の時に処理されないように.bashrcを修正します。
.bashrcの修正
CentOSでsftp接続の場合は次の環境変数が設定されていたのでこれを使用して、.bashrcの先頭の方に次のように追記しました。[ -z "$PS1" ] && return
ちなみに環境変数の差分取ってみたところ、
sftp接続限定の場合は、BASH_EXECUTION_STRING変数を利用してもよいかもしれません。
# CentOS6の場合 if [ "$BASH_EXECUTION_STRING" = "/usr/libexec/openssh/sftp-server" ]; then return fi # または正規表現でマッチさせる if [[ "$BASH_EXECUTION_STRING" =~ sftp ]]; then return fi
結論
対話的じゃないときは余計なことしないように、$PS1で条件分岐した方が無難ですね。Debian Wheezyの/etc/bash.bashrc # If not running interactively, don't do anything [ -z "$PS1" ] && return CentOS /etc/bashrc # are we an interactive shell? if [ "$PS1" ]; then OSX /etc/bashrc # System-wide .bashrc file for interactive bash(1) shells. if [ -z "$PS1" ]; then return fi
シェル環境を見直すよい機会となりました。
0 件のコメント:
コメントを投稿