sshfs는 항상 fstab에서 암호를 요구합니까?


20

다음 줄을 사용하여 / 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에 로그인 할 수 있습니다. 부팅시 볼륨을 자동으로 마운트 할 수 있도록 퓨즈의 비밀번호 요청을 중지하려면 어떻게해야합니까?

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

답변:


13

키 기반 인증은 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

아아, 그것이 더 좋은 방법입니다. 로그인 스크립트에 넣지 않을 것이라고 생각했습니다. 감사!
semiserious

~마운트 지점에서 조심해서 사용하십시오 . 터미널 대신 명령을 실행하기 위해 패널에서 실행기 아이콘을 사용하는 경우이 명령 ~이 평가되지 않고 /home/명령이 실패 할 수 있습니다.
Nick

@Nick GUI를 사용하는 경우 자동 마운팅 전용 도구가있을 수 있습니다. 내 대답을 따르면 두 명령을 쉘 스크립트에 넣습니다. 런처 아이콘은 해당 스크립트를 실행합니다.
Gilles 'SO- 악마 그만해'

10

표준 사용자로 다음 구문을 사용하여 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/에 게시됩니다.


그 링크 : variux.com/blog/?p=161 더 이상 작동하지 않는 것 같습니다 ...
Christian Casutt

@ChristianMuggli 귀하의 의견에 감사드립니다. 전체 튜토리얼 주소를 업데이트했습니다. 그러나 오랜 시간 동안 튜토리얼을 테스트하지 않았습니다. variux.com/sshfs-automount-at-boot-with-fstab-on-ubuntu-14-04
variuxDavid

5

나는 같은 문제가 있었다.

이전에 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

이것은 보안 측면에서 정말 나쁩니다. 루트에 대해 별도의 키 세트를 작성하고 authorization_keys에이를 추가하십시오. 개인 키를 복사 해서는 안됩니다 .
Christian Wolf

3

암호없이 부팅하려면 암호없이 공개 / 개인 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

2
SSHFS version 2.8 fuse: unknown option 'SSHOPT=IdentityFile /home/ravi/.ssh/id_boxy_rsa'
Tom Hale

1
@TomHale 대신 ,SSHOPT='IdentityFile /path/to/private/key'간단합니다,IdentityFile /path/to/private/key
pulkitsinghal

2

다음 줄을 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.


2

실제로 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를 자동으로 마운트합니다.


0

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

fuse reconnect,idmap=user,allow_other,default_permissions

결국 나를 위해 일한


0

키를 지원하지 않는 서버에 연결하려고하는데 여전히 자동으로 키를 원한다면을 (를) 사용 하고조차도 sshpass비밀번호를 입력 할 수 있습니다 .sshfsfstab

예를 들어, 이와 비슷한 것을 넣는 경우 /etc/fstab:

sshfs#username@host:/  /mnt/here   fuse   auto,ssh_command=sshpass\040-f\040/root/.ssh/host.password\040ssh  0  0

그런 다음에 지정된 파일 이름에 비밀번호를 입력하십시오 /etc/fstab.

echo 'secret' > /root/.ssh/host.password

다음을 설치했는지 확인하십시오 sshpass.

pacman -S sshpass  # if you're using Arch Linux

그런 다음 작동해야합니다.

mount /mnt/here

ssh키를 확인하기 위해 서버에 먼저 한 번 문의 해야 할 수도 있지만,이 작업은 수동 상호 작용없이 작동하며 auto플래그가있는 fstab경우 부팅시 수동으로 암호를 입력 할 필요없이 마운트해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.