背景
在前端开发中,经常需要在本地进行开发调试,但有时需要在远程服务器上进行开发,这时,我们可以使用 sshfs 将远程服务器上的目录挂载到本地进行开发。
而在 Docker 容器中,我们同样可以使用 sshfs 挂载远程目录,但在实际使用中,可能会遇到 “permission denied” 的问题,本文将为大家介绍如何解决这个问题。
解决方法
方法一:修改 sshd_config 文件
在远程服务器上,我们需要修改 sshd_config 文件,将以下两行代码的注释去掉:
#Subsystem sftp /usr/lib/openssh/sftp-server Subsystem sftp internal-sftp
然后添加以下代码:
Match User your_username X11Forwarding no AllowTcpForwarding no ChrootDirectory %h ForceCommand internal-sftp
其中,your_username 是你的用户名,%h 表示用户的家目录。
修改后,重启 ssh 服务:
sudo service ssh restart
方法二:在 Dockerfile 中添加用户
在 Dockerfile 中,我们可以添加一个与远程服务器上的用户相同的用户,然后在容器中使用该用户进行 sshfs 操作。
首先,在 Dockerfile 中添加以下代码:
RUN groupadd -g 1000 your_username && \ useradd -u 1000 -g 1000 -d /home/your_username -s /bin/bash your_username && \ mkdir -p /home/your_username/.ssh && \ chown -R your_username:your_username /home/your_username
其中,your_username 是你的用户名。
然后,在容器中使用该用户进行 sshfs 操作:
sshfs -o allow_other,IdentityFile=/path/to/ssh/key your_username@remote_host:/remote/path /local/path
示例代码
-- -------------------- ---- ------- - ---------- ---- ----------- - ------- ----- --- ------- ------ -- ------- ------- -- ----- - --- ---- --- -------- -- ---- ------------- -- - ------- -- ---- -- ---- -- ------------------- -- --------- ------------- -- - ----- -- ------------------------ -- - ----- -- --------------------------- ------------------- - --- ------- --------- ------- ---- - ----- ------ --------- --- ----- -- ----------- -- - ----- -- --------------------------- ----------- ---- ------------- - ----- ------ --------- --- ----- -- ----------------------------------------- -------------------------------------- ----------- --- ------- --------
总结
本文介绍了在 Docker 容器中使用 sshfs 挂载远程目录时出现 “permission denied” 的解决方法,包括修改 sshd_config 文件和在 Dockerfile 中添加用户两种方法。希望本文对大家有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66029a68d10417a222e67e01