sshfs는 항상 fstab에서 암호를 요구합니까? 사용하여 /

다음 줄을 사용하여 / etc / fstab에 sshfs 마운트를 입력하려고합니다.

sshfs#oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other 0 0

이 볼륨은 부팅시 마운트됩니다. 부팅 후 아무 일도 일어나지 않지만 sudo mount -a 명령을 사용하면 항상 암호를 묻는 메시지가 나타납니다. SSH 키를 설정하고 192.168.0.2로 컴퓨터로 전송했으며 암호없이 일반 ssh에 로그인 할 수 있습니다. 부팅시 볼륨을 자동으로 마운트 할 수 있도록 퓨즈의 비밀번호 요청을 중지하려면 어떻게해야합니까?

도움이된다면 아치 리눅스를 실행하는 랩톱에서 데비안을 실행하는 홈 서버에 연결하려고합니다. 감사



답변

키 기반 인증은 ssh프로세스가 키를 찾을 수있는 경우에만 작동 할 수 있습니다. 아마도 홈 디렉토리에 키가있을 것입니다. 하지만 sshfs열쇠를 어디에서 찾아야하는지 전혀 말하지 않았습니다 . 부팅시 root모든 파일 시스템을 마운트하므로 키는 /root/.ssh또는에 참조되어 있어야합니다 /root/.ssh/config.

로그인 한 후 자신의 사용자로 파일 시스템을 마운트하는 것이 좋습니다. 로그인 할 때 실행되는 스크립트에 넣으십시오.

ssh-add ~/.ssh/name_of_key.id_rsa
sshfs homeserver:/media/usb0 ~/exthd

에 별칭을 넣으 homeserver십시오 ~/.ssh/config.

Host homeserver
HostName 192.168.0.2
User oli


답변

표준 사용자로 다음 구문을 사용하여 Ubuntu 14.04에서 fstab을 통해 sshfs를 마운트 할 수있었습니다 (CAPS의 내용은 입력 할 수있는 변수입니다).

USER@HOST:/REMOTE_DIR /LOCAL_DIR fuse.sshfs delay_connect,_netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,default_permissions,uid=USER_ID,gid=USER_GID 0 0

이것은 /superuser/669287/automount-sshfs-using-fstab-without-mount-a에 있고 여기 에서 delay_connect 를 추가하는 정보의 조합입니다 /ubuntu/ 326977 / sshfs-is-not-mounting- 자동 부팅시 -despite-etc-fstab-configuration .

이 튜토리얼을 사용하여 USER_ID 및 USER_GID를 얻었습니다. https://kb.iu.edu/data/adwf.html

Unix에서 사용자의 UID 또는 GID를 찾으려면 id 명령을 사용하십시오. 특정 사용자의 UID를 찾으려면 Unix 프롬프트에서 다음을 입력하십시오.

id -u username

사용자 이름을 해당 사용자의 사용자 이름으로 바꾸십시오. 사용자의 GID를 찾으려면 Unix 프롬프트에서 다음을 입력하십시오.

id -g username

또한 전체 자습서를 원하면 https://www.variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04/에 게시됩니다.


답변

나는 같은 문제가 있었다.

이전에 ssh 키를 설정 ssh-keygen한 다음ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.100

ssh는 비밀번호를 묻지 않고 잘 작동했기 때문에 sshfs가 여전히 비밀번호를 원했던 이유에 대해 혼란 스러웠습니다 …

즉 말하자면,

ssh root@192.168.0.100

잘 작동했지만 sshfs는 입력 할 때 여전히 암호를 요구했습니다.

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other

Gilles가 설명한 것처럼 sshfs루트 디렉토리에서 필요한 키를 찾고있었습니다.

따라서 필자는 홈 폴더의 숨겨진 .ssh 폴더에서 루트의 .ssh 폴더로 id_rsa 및 id_rsa.pub 파일을 복사하여이 문제를 해결했습니다.

cp /home/pi/.ssh/id_rsa /root/.ssh/
cp /home/pi/.ssh/id_rsa.pub /root/.ssh/

그런 다음 암호를 입력하지 않아도 다음을 입력해도 효과가 없었습니다.

sudo sshfs root@192.168.0.100:/home/raspberry/Videos /home/pi/LinuxMintMountedFolder/ -o allow_other


답변

암호없이 부팅하려면 암호없이 공개 / 개인 ssh 키를 만들어야합니다. 권장하지는 않지만 최소한 chmod 400루트 사용자로 해당 파일을 보호 할 수 있습니다 .

그 후 평소와 같이 마운트 포인트에 공개 키를 복사해야합니다.

ssh-copy-id -i my_new_key.pub oli@192.168.0.2

이 키를 사용하려면 sshfs에 지시해야합니다.

oli@192.168.0.2:/media/usb0 /media/ExtHD fuse     defaults,nonempty,allow_other,'IdentityFile /path/to/private/key' 0 0


답변

다음 줄을 Debian 8.2에서 완벽하게 작동합니다 fstab.

user@hostname:/path/to/localmountpoint /path/to/remotemountpoint fuse.sshfs _netdev,user,port=(if_not_22),idmap=user,transform_symlinks,identityfile=/home/user/.ssh/id_rsa,allow_other,default_permissions,uid=user_id,gid=group_id 0 0

호스트 이름은 원격 서버 (마운트 할 폴더) 사용자가 로컬 및 원격으로 동일 함을 나타냅니다. (쉬운)

사용 ssh-keygen하고 사용자 ssh-copy-id가 키를 원격 서버 (호스트 이름)에 복사하는 데 사용할 ssh 키를 로컬로 작성했는지 확인하십시오 .

당신은 찾을 수 user_idgroup_id로컬 서버에서 사용자에 대한 /etc/passwd.

또한 사용자에게 폴더에 대한 읽기 / 쓰기 권한이 있는지 확인하십시오 path/to/localmountpoint.


답변

실제로 password_stdin 옵션을 사용하여 시작시 공개 키없이 SSHFS를 마운트 할 수 있지만 fstab에서는 마운트 할 수 없습니다.

필요한 것은 작은 스크립트 파일과 cron입니다.

공개 키는 항상 더 나은 선택입니다. 그러나 때로는 공개 키가 작동하지 않습니다 (몇 번이나 그 문제가 발생했습니다). 스크립트 파일에는 비밀번호가 포함되어 있습니다. 따라서 루트 만이 파일에 대한 권한을 가지고 있는지 확인해야합니다!

스크립트 파일은 다음과 같습니다 (/root/automount.sh).

#!/bin/sh
if [ $(mount | grep 'user@server:/folder' | wc -l) -ne 1 ]
then
    echo 'PASSWORD' | sshfs user@server:/folder /mnt/mountpoint -o password_stdin,allow_other
    echo 'SSHFS has been mounted.'
else
    echo 'SSHFS is already mounted.'
fi

시작시이를 실행하려면 crontab을 루트로 사용하고 다음 줄을 입력하십시오.

@reboot /root/automount.sh

위에서 언급했듯이 일반 텍스트 비밀번호가 포함되어 있으므로 아무도 파일을 읽을 수 없도록해야합니다!

-rwx------ 1 root root 526 Nov 21 12:57 automount.sh

지금은 시스템을 재부팅 할 때마다 자격 증명을 사용하여 SSHFS를 자동으로 마운트합니다.


답변

같은 문제가 있었다. 결국 유형을 단순 퓨즈로 설정하거나 옵션을 잘라내어 다음과 같이 할 수 있습니다.

fuse reconnect,idmap=user,allow_other,default_permissions

결국 나를 위해 일한