トラブルシューティング
このページでは Mobile SSH のよくある問題と、サーバー側の SSH 設定を変更する前にまず確認すべき点を説明します。
接続できない
確認してください:
- 端末にネットワークアクセスがある。
- サーバーのホスト名または IP アドレスが正しい。
- SSH ポートが正しい(通常は
22)。 - ファイアウォール、VPN、携帯回線、または Wi-Fi ネットワークがポートをブロックしていない。
- SSH サーバーが稼働しており、使用中のネットワークからの接続を受け付けている。
同じホストが別の端末で動く場合は、ホスト、ポート、ユーザー名、鍵、ネットワーク経路を正確に比較してください。
認証に失敗する
確認してください:
- ユーザー名のつづり。
- パスワードまたは鍵のパスフレーズ。
- サーバーがパスワードログイン、鍵ログイン、またはその両方を許可しているか。
- 秘密鍵がサーバーユーザーの
authorized_keysの公開鍵と一致するか。 - 鍵ファイルがヘッダーとフッターの行を含めて完全にインポートされたか。
暗号化された秘密鍵では、パスワード/パスフレーズ欄にパスフレーズを入力します。
秘密鍵のインポートに失敗する
秘密鍵のインポートはシステムのファイル選択ツールを使います。インポートに失敗する場合:
- 選択したファイルが公開鍵
.pubではなく秘密鍵であることを確認します。 - 信頼できるテキストエディタでファイルを開き、鍵ブロック全体が含まれていることを確認します。
- 秘密鍵欄に鍵を手動で貼り付けてみます。
- 鍵の種類が対応しているものであることを確認します。Android では Ed25519、ECDSA(P-256/384/521)、RSA、iOS では Ed25519 または ECDSA です。DSA(
ssh-dss)はどちらでも使えず、iOS は RSA に対応していません — 代わりに Ed25519 鍵を生成してください。
キーボード入力が遅れる、または変わる
Mobile SSH は自動修正や予測候補をオフにしてキー入力をそのままシェルへ送るため、キーボードがリモート側に届く前にテキストを書き換えることはありません。それでもキーボードが入力を変えてしまう場合は、システムレベルの置換ツールやクリップボードツールが割り込んでいないか確認し、ESC、TAB、CTRL、矢印、HOME、END、PGUP、PGDN などのターミナルキーには追加キーの行を使ってください。
tmux のスクロールが想定どおりでない
Mobile SSH はターミナルの状態に応じてスクロールの挙動を変えます。tmux や他の代替画面プログラムでは、スクロールのジェスチャーがローカル履歴のスクロールではなく tmux のコピーモードのコマンドを送ることがあります。tmux のマウスモードが有効な場合、アプリはマウスホイールのエスケープシーケンスを送ります。
スクロールがおかしいと感じたら:
- リモートサーバーで tmux のマウスモードを有効・無効にしてみます。
- 追加キーの行の
PGUPとPGDNを使います。 - 密な出力をスクロールする前に、ペインをダブルタップして全画面にします。
- リモートのターミナルサイズが古く見える場合は、tmux をデタッチして再アタッチします。
画面ロック後にセッションが切れる
Android では、Mobile SSH は keepalive、フォアグラウンドサービス、ウェイクロック、Wi-Fi ロック、再接続の試行を使って切断を減らします。それでも Android のバッテリーポリシーがバックグラウンド処理を止めることがあります。
確認してください:
- 端末がバックグラウンドアプリを積極的に止める場合は、Mobile SSH のバッテリー最適化を無効にします。
- 長いセッションの間は Wi-Fi またはモバイルデータを安定させます。
- ロック解除後に Mobile SSH を開き直し、Active Sessions をタップします。
- アプリをスワイプで閉じてもシェルを生かしておきたい場合は、設定で Keep sessions running in background が有効になっているか確認します。
- サーバーが SSH セッションを切断した場合は、ホーム画面から再接続します — Continue にはまだ生きているものが、Tmux sessions にはサーバー側で待っているものが並びます。
iOS では、システムがバックグラウンドのアプリを一時停止するため、アプリを切り替えたり画面をロックしたりすると、素の SSH 接続を無期限に開いたままにはできません。短い猶予時間で素早いアプリの切り替えはカバーされます。それより長くなる場合は、サーバープロファイルで Auto-attach tmux session を有効にする(または Eternal Terminal トランスポートを使う)と、再接続時に中断したところと同じシェルに戻れます。
ファイル転送が端末のファイルを参照できない
Mobile SSH は Android でストレージ権限を一切求めません。代わりに、ローカルペインにはシステムのフォルダー選択ツールで許可したフォルダーが 1 つ表示されます — 空の場合は Pick folder でフォルダーを選んでください。この許可は保持されるため、一度きりの手順です。
リモートのファイルは読み込めるのにローカルが読み込めない場合、SSH 接続に問題はなく、単にまだフォルダーを許可していないだけです。
iOS ではローカル側のペインにアプリのドキュメント領域が表示され、ファイルはシステムのドキュメント選択ツールや写真選択ツールから追加します。そこへのダウンロードは、ファイルアプリの この iPhone 内 にも表示されます。
アップロードまたはダウンロードに失敗する
確認してください:
- SSH セッションがまだ接続されている。
- リモートのディレクトリが存在する。
- リモートユーザーにそのパスの読み取りまたは書き込み権限がある。
- ローカルの保存先が書き込み可能である。
- 端末に十分な空き容量がある。
- 大きな転送に対してネットワークが安定している。
ポートフォワードに失敗する
確認してください:
- ローカルポートが
1から65535の間である。 - ローカルポートがすでに使われていない。
- トンネル文字列が
PORTまたはLOCAL:REMOTEHOST:REMOTEである。 - リモートのホストとポートが SSH サーバーから到達できる。
- SSH サーバーが TCP 転送を許可している。
デバッグログ
2 つのプラットフォームは記録する内容が異なるため、問題に合ったほうを選んでください。
Android — ターミナルと描画。 Settings → Debugging → Show Debug and Logs buttons を有効にすると、開始画面に Debug ボタンが現れます。これはターミナルイベント、SSH データのサイズ、タッチ入力、サイズ変更の挙動、トンネルのライフサイクルを記録します。記録を開始すると、入力したすべてのキー(パスワードを含む)が取得される旨の警告がまず表示されます。停止すると、アーカイブが Downloads フォルダーに書き出されます。
iOS — 接続と再接続。 Settings → Diagnostics → Record debug log をオンにします。これは接続を試みた各アドレスとその失敗理由、再接続の試行とバックオフ、切断、「peer stopped answering keepalives」、ネットワークの変化、tmux コマンドとそのエラーを記録します。Settings には行数がリアルタイムで表示されるので記録中であることを確認でき、Export Debug Log でテキストファイルとして共有できます。ログはメモリ上に保持され、対象は現在のアプリセッションのみです。
デバッグログやアーカイブは共有する前に確認してください。トラブルシューティング用であり、サーバー名、アドレス、タイミング、その他の環境の詳細 — そして Android では入力した内容そのもの — が含まれることがあります。