MacへのSSH接続時にlsで「Operation not permitted」と表示される場合の対処法

日本語 English

 MacへのSSH接続時に「ls: Operation not permitted」と表示される場合の簡単な対処法:


1. ターミナル、sshd-keygen-wrapper、sshdにフルディスクアクセスを許可する
Appleメニュー > システム設定 > プライバシーとセキュリティ > フルディスクアクセスの順に開き、3つのプログラムでフルディスクアクセスを有効にします。

 

2. 別のMacにrootユーザーとしてSSH接続する

sudoを付けてlsコマンドを実行します。

 

3. 共有設定で「リモートログイン」を再度有効にする

システム設定 > 一般 > 共有の順に開き、「リモートログイン」をいったんオフにしてからオンにします。

 

4. SIPを無効にする

macOS復旧 > ユーティリティ > ターミナルを開き、csrutil disableと入力します。SIPを無効にするとセキュリティが低下するため、必要な場合に限って実行してください。

SSH(Secure Shell)を使って別のMacに安全に接続し、特定のディレクトリの内容を一覧表示するためにlsコマンドを実行したところ、ターミナルに「ls: Operation not permitted」というエラーだけが表示されることがあります。

このエラーは、表示されたメッセージのとおり、対象フォルダにアクセスする権限がないことを示しています。SSH接続の不具合、ユーザー権限の制限、またはシステムによる制限が原因として考えられます。

macOSにSSH接続した後、lsコマンドで「Operation not permitted」と表示される場合は、以下の対処法を試してください。

macOSへのSSH接続時にlsでOperation not permittedと表示されるエラー

ターミナル、sshd-keygen-wrapper、sshdにフルディスクアクセスを許可する

SSHでmacOSに接続してlsを実行したときや、特定のディレクトリにアクセスしたときに「Operation not permitted」と表示される場合は、macOSのTCC(Transparency, Consent, and Control)による保護が原因であることが多くあります。

ターミナル、sshd-keygen-wrapper、sshdにフルディスクアクセスを許可すると、TCCによる制限を回避し、SSH接続先のMac上にある保護された領域にアクセスできるようになります。

  1. Appleメニュー > システム設定 > プライバシーとセキュリティ > フルディスクアクセスの順にクリックします。
    フルディスクアクセスを開く
  2. ターミナルとsshd-keygen-wrapperを有効にします。
  3. 追加ボタン(+)をクリックします。
  4. 表示されたウインドウで、場所からmacOS(またはMacintosh HD)を選択し、Command+Shift+.(ピリオドキー)を押して非表示のusrフォルダを表示します。
  5. sbinフォルダ内にあるsshdを選択し、「開く」をクリックしてフルディスクアクセスのリストに追加します。
    注:usrフォルダのパスは /usr/sbin/sshd です。
    フルディスクアクセスのリストにsshdを追加する
  6. そこでSSHDをオンにします。
    SSHとターミナルのフルディスクアクセスを有効にする

ターミナル、sshd-keygen-wrapper、sshd にフルディスクアクセスを付与した後、「ls: Operation not permitted」エラーが発生するか確認してください。

「ls: Operation not permitted」エラーの解消に役立つこの方法を、ほかの人にも共有してください。

別のMacへのSSH接続でroot権限を使う

Macのセキュリティ保護が強化されたため、SSH接続を利用していても、通常のユーザーにはすべての権限が与えられていない場合があります。そのため、sudo を使って ls /target-directory コマンドを実行し、フォルダ内のファイルを表示してみてください。

問題が解決しない場合は、次の方法を試してください。

「共有」で「リモートログイン」を再度有効にする

「共有」設定の「リモートログイン」機能を使うと、MacのSSHサーバーから別のMacへ安全に接続できます。

macOSにSSH接続した後に「ls: Operation not permitted」エラーが発生した場合は、「共有」で「リモートログイン」をいったん無効にしてから再度有効にすると解決する可能性があります。これによりSSHサーバー(sshd)が再起動され、SSHサーバーで発生している可能性のあるエラーが解消されます。

  1. Appleメニュー > システム設定 > 一般 > 共有の順に選択します。
    共有設定を開く
  2. 下にスクロールして「リモートログイン」を探します。
  3. 「リモートログイン」を無効にし、しばらくしてから再度有効にします。
    リモートログインを再度有効にする

SIPを無効にする

M1 MacなどのMacにSSH接続したときに「ls: Operation not permitted」と表示される場合は、SIPを無効にする方法も検討できます。最新のMacではセキュリティ保護が大幅に強化されています。SIPはリモートから回避できません。そのため、一時的にSIPを無効にして、MacにSSH接続した後で ls を使ってディレクトリの内容を確認してみてください。

  1. MacをmacOS復旧で起動します。
    IntelベースのMacでは、Command+Shift+Rを押したまま再起動し、Appleロゴまたは回転する地球儀が表示されるまで待ちます。
    Appleシリコン搭載MacではMacの電源を切り、起動オプションが表示されるまで電源ボタン(Touch ID)を押します。「オプション」>「続ける」を選択してください。
  2. 上部のメニューバーで「ユーティリティ」>「ターミナル」を選択します。
    macOS復旧でターミナルを開く
  3. 次のコマンドを入力します。 csrutil disable
  4. ターミナルを終了し、Macを再起動します。

別のMacからSSH接続した後は、macOS復旧で csrutil enable コマンドを実行し、SIPを再度有効にしてください。

この記事が、macOSにSSH接続したときに発生する「ls: Operation not permitted」エラーの解決に役立った場合は、より多くの人に共有してください。