Written by
JackYamamotoMacへSSH接続時の "ls: Operation not permitted" を修正するためのクイックフィックス:
1. Terminal、sshd-keygen-wrapper、およびsshdに完全なディスクアクセスを許可
Appleメニュー > システム環境設定 > プライバシーとセキュリティ > 完全ディスクアクセスに移動し、3つのプログラムに完全ディスクアクセスを有効にします。
2. rootとして別のMacにSSHで切り替える
lsコマンドをsudoで実行
3. 'リモートログイン'を再度有効にする
システム環境設定 > 一般 > 共有で、リモートログインをオフにしてから再度オンにします。
4. SIPを無効にする
macOSリカバリモードに入り、ユーティリティ > ターミナルを開き、csrutil disableと入力します。
SSH(Secure Shell)を使用して他のMacに安全に接続し、特定のディレクトリの内容をリストするためにlsコマンドを実行した後、ターミナルで "ls: Operation not permitted" エラーが表示される場合があります。
このエラーは、対象のフォルダにアクセスする権限がないことを示しています。これは、SSH接続のバグ、ユーザー権限の制限、またはシステムからの制限のいずれかによるものです。
SSHで別のmacOSに接続した後のlsコマンドでのエラー "Operation not permitted" を解決するには、以下のトリックに従ってトラブルシューティングを行います。
Terminal、sshd-keygen-wrapper、およびsshdに完全なディスクアクセスを許可
macOSにSSHで接続した際にlsを実行したり特定のディレクトリにアクセスしようとした際に "Operation not permitted"エラーが発生する場合、通常はmacOSのTCC(透過性、同意、および制御)保護によるものです。
Terminal、sshd-keygen-wrapper、およびsshdに完全なディスクアクセスを許可することで、これらのTCC制限をバイパスし、SSH接続されたMacの保護された領域へのアクセスを可能にします。
- Appleメニュー > システム環境設定 > プライバシーとセキュリティ > 完全ディスクアクセスをクリックします。
- Terminalとsshd-keygen-wrapperを有効にします。
- 追加ボタン(+)をクリックします。
- ポップアップで、ロケーションの下にmacOS(またはMacintosh HD)を選択し、隠しusrフォルダを表示するために Command - Shift - .(ドットキー)を押します。
- sbimフォルダの中にあるsshdを見つけ、開いてFull Disk Accessリストに追加します。
注意:usrフォルダのパスは /usr/sbin/sshd です。 - SSHをそこでオンにします。
ターミナル、sshd-keygen-wrapper、およびsshdにフルディスクアクセスを許可した後、ls操作が許可されていないエラーが発生するかどうかを確認してください。
この「ls:操作が許可されていません」エラーを修正する裏ワザを他の人と共有してください。
他のMacにrootとしてSSHするに切り替える
Macのセキュリティ保護が向上したため、通常のユーザーでもSSHアクセスを持っていても全権限を持っていない場合があります。そのため、フォルダのファイルを表示するためにlsコマンドを使用するときは、sudo ls /target-directoryコマンドを実行するように変更してください。
問題が解決しない場合は、次の方法を試してください。
「リモートログイン」を共有設定で再有効にする
共有設定の「リモートログイン」機能を有効にすると、Mac上のSSHサーバーが別のMacと安全な接続を確立できます。
macOSにSSH接続した後に「ls:操作が許可されていません」エラーが発生した場合、「リモートログイン」を再有効にすることで、SSHサーバー(sshd)を再起動し、SSHサーバーで発生する可能性のあるエラーを排除できるかもしれません。
- Appleメニュー>システム設定>一般>共有に移動します。
- 「リモートログイン」を見つけます。
- 「リモートログイン」を無効にしてしばらくしてから再度有効にします。
SIPを無効にする
M1 Macや他のMacにSSHで接続する際に「ls:操作が許可されていません」と表示される場合は、SIPを無効にすることを検討してください。現代のMacでは、セキュリティ保護が大幅に向上しています。SIPはリモートでバイパスできません。そのため、MacにSSHで接続した後lsを使用してディレクトリの内容を確認するために一時的にSIPを無効にしてみてください。
- Macをリカバリモードで起動します。
IntelベースのMacでは、Command - Shift - Rを押しながらデバイスを再起動してAppleロゴまたは回転する地球が表示されるまで押します。
Apple Silicon Macでは、Macをオフにし、電源ボタン(Touch ID)を押して起動オプションが表示されたら、選択してOptions>続行を選択します。 - 上部メニューバーのユーティリティをクリック>ターミナル。
- 次のコマンドを入力します。 csrutil disable
- ターミナルを終了してMacを再起動します。
他のMacにSSH接続した後は、macOSリカバリモードでコマンド-csrutil enableを使用してSIPを有効にすることを忘れないでください。
この投稿があなたのmacOSへのSSH接続時の「ls:操作が許可されていません」エラーの解決に役立つ場合は、他の人と共有してください。