gvfs 마운트에 대한 바로가기를 만들고 싶습니다(셸에서 마운트하는 것을 선호합니다). 이를 위해서는 비밀번호를 입력 ftp://
하고 연결할 필요가 없다는 것이 매우 필요/편리합니다. sftp://
현재 내가 아는 유일한 방법은 다음과 같습니다.
echo 12345 | gvfs-mount sftp://[email protected]/
파일에 대한 권한 700
(또는 파일에 대한 권한 100
)을 부여할 수는 있지만 이것이 안전한지는 확신할 수 없습니다. 아이템 보다 .netrc
더 나쁜가요 ? 알아요 . 하지만 대부분의 서버에서는 쉘 ssh-copy-id
에 액세스할 수 없습니다 .sftp
내 접근 방식에 대한 더 나은 (표준) 대안이 있습니까? 비밀번호를 저장할 때 무엇을 합니까 nautilus
?caja
답변1
나도 당신과 마찬가지로 명령줄에서 파일 시스템을 마운트/마운트 해제하는 것을 좋아합니다.
표준 입력 옵션 정보
꽤 안전한지는 잘 모르겠습니다. .netrc 프로젝트보다 더 나쁜가요?
많은 시스템에서 프로세스 이름과 명령줄 매개변수가 모든 사용자에게 표시된다는 점을 알고 있어야 합니다. 예를 들어, Linux에서는 grep -a . /proc/*/cmdline
모든 것을 보려면 이렇게 합니다.
즉, bash를 포함한 일부 쉘에서는 echo
이것이 내장 명령이므로 프로세스가 시작되지 않습니다.
그래서 내가 아는 한 비교해서는 안 된다 .netrc
. 그럼에도 불구하고 파일 권한을 다시 확인하십시오.
SFTP
gvfs-mount sftp://somehost/somepath
작업하는 데 비밀번호가 필요하지 않습니다. (방금 테스트에 성공했습니다.)
권장되는 솔루션은 비밀번호를 어디에나 저장하는 대신 키 기반 인증을 사용하는 것입니다.
예를 들어인증 - 비밀번호 없는 SSH 로그인을 설정하는 방법은 무엇입니까? -우분투에 물어보세요그리고SSH 키를 다른 컴퓨터에 복사하는 가장 쉬운 방법은 무엇입니까? -우분투에 물어보세요(Ubuntu용으로 작성되었지만 다른 Unices에서도 동일하게 작동합니다.)
ssh-copy-id에 대해 알고 있지만 대부분의 SFTP 서버의 셸에 액세스할 수 없습니다.
ssh-copy-id는 편리한 단축키입니다. 키 기반 인증을 설정하기 위해 셸 액세스는 필요하지 않지만 홈 디렉터리에 대한 액세스는 필요합니다.
~/.ssh/
SFTP를 통해 대화형으로 파일에 액세스할 수 있는 경우 관리자가 이를 방지하기 위해 주의하지 않는 한 SFTP를 설정할 수 있지만 ~/.ssh/authorized_keys
그렇게 하면 화를 낼 수 있습니다. 실제로 관리자는 다음과 같이 해야 합니다.장려하다사용자가 키 기반 인증을 설정합니다. 어떤 정책이 있는지 확인하세요.
키만 설정해야 한다면 키를 복사하세요.사람들위의 (비공개) 키 파일을 (아마도) ~/.ssh/id_rsa.pub
명명된 디렉터리의 원격 파일에 생성하고 권한을 설정합니다(당신을 위한 읽기/쓰기, 다른 사람에게는 영향을 주지 않음)..ssh
authorized_keys
600
파일 전송 프로토콜
FTP URL과 관련하여 전통적인 대답은 ~/.netrc
설명된 대로 a를 사용하는 것입니다.https://askubuntu.com/a/359802/68124.
아아, 를 포함한 수많은 FTP 클라이언트(이전 및 신규)에서는 잘 작동 curlftpfs
하지만 (적어도 Ubuntu 14.04에서는) gvfsmount
무시합니다.
curlftpfs
귀하의 사용 사례에 적합 할 수 있습니다 . 주요 차이점은 gvfs-mount
마운트 지점을 계산하는 대신 마운트 지점을 선택한다는 것입니다.
curlftpfs ftp://host/ ~/mymountpoint
SFTP를 다시 사용하세요
이 옵션이 마음에 들면 curlftpfs
SFTP URL을 고려해 보세요.
sshfs host:/some/remote/path ~/myothermountpoint
sshfs에 쉘 액세스가 필요한지 궁금하다면 Wikipedia에서는 다음과 같이 말합니다.클라이언트는 SFTP(SSH 파일 전송 프로토콜)를 통해 원격 파일 시스템과 상호 작용합니다.[2]
마지막 말씀: 명시적인 마운트 지점이 필요한 도구의 경우 먼저 올바른 경로에 빈 디렉터리를 만드는 것을 고려하세요. 여러 번 시도하거나 옵션을 변경하는 경우 fusermount -u somepath
다시 설치하기 전에 제거해야 합니다.
답변2
비슷한 방법을 사용하여 expect
모든 연결에 자격 증명을 제공할 수 있습니다. 매우 안전하지는 않지만 귀하의 요구에 적합합니다.
#!/usr/local/bin/expect --
set timeout -1
spawn gvfs-mount {args}
expect "User"
send "joe\n"
expect "Password:"
send "xxxxx\n"
expect eof