SSH経由でリモートでGNU/Linuxシステムを使用しています。
エラーを引き起こす$HOME/.bash_profile
scriotに誤って何かを追加しました。 (具体的には、exec foo
の代わりに. foo
コマンドを追加し、実行権限のない別のbashスクリプトに適用したため、エラーが発生しました。)
今、私は自分のマシンにSSH、SCP、またはSFTPすることができないようです:bash、私のログインシェル、exec foo
コマンドを実行しようとし、エラーを取得してスローします!リモートでアクセスできる他のアカウントを持っていません。
システムへのアクセスを復元するために私ができることはありますか?
さらなる詳細:
説明されているように here 使用できます
ssh -t user@Host bash --noprofile
実際、@ JoLが示唆しているように、--noprofile
、sshがbashを別のコマンドとして実行する場合、ログインシェルとは見なされないため。ランニング ssh -t user@Host bash
はRCファイルのみを読み取ります。実行中ssh -t user@Host bash --norc
もそれらを読みません。
SSHを試し、sh
の代わりにbash
を実行してください。
ssh user@Host sh
次に、名前を変更するか(mv
)、壊れたファイルを編集します(ex/vi
)。
ssh -t Host vi .bash_profile
(またはvi
の代わりに任意のエディター)を実行して、.bash_profile
を修正します。
(選択するエディターによっては、-t
オプションは必要ない場合があります。)
修正する必要があるものが正確にわかっている場合は、非対話的に修正できる場合があります。たとえば、次のようなもの
printf 's/exec foo/. foo/\nwq\n' ssh Host ed .bash_profile