
Linux(Debian Stretch) 서버에 루트로 로그인했습니다. SSH 클라이언트를 루트로 실행하면 SSH 클라이언트가 /root/.ssh/
다음 대신 모든 SSH 구성 및 키 파일의 위치로 사용을 요구하는 것으로 보입니다 ~/.ssh
.
$ id
uid=0(root) gid=0(root) groups=0(root)
$ export HOME=/srv/scratch/user
$ cd ~/.ssh
$ pwd
/srv/scratch/user/.ssh
$ ssh -vvv [email protected]
OpenSSH_7.4p1 Debian-10+deb9u7, OpenSSL 1.0.2t 10 Sep 2019
debug1: Reading configuration data /root/.ssh/config
debug1: /root/.ssh/config line 3: Applying options for example.com
debug1: Reading configuration data /etc/ssh/ssh_config
... more lines that never mention /srv/scratch/user/.ssh ...
SSH 클라이언트가 .ssh
의 디렉토리를 사용하지 않는 이유는 무엇입니까 /srv/scratch/user
?
답변1
export HOME=/srv/scratch/user
ssh
HOME
사용자의 홈 디렉터리를 찾기 위해 환경 변수를 사용하지 않습니다 . 그것은 전화한다getpwuid()
그리고 거기에서 반환된 홈 디렉터리를 사용합니다. 특정 시스템이 사용자 정보를 저장하는 위치 또는 그 곳 getpwuid()
에서 사용자 정보를 반환합니다 ./etc/passwd
다음을 사용하여 ssh가 다른 구성 파일을 읽도록 할 수 있습니다.-F
옵션:
-에프configfile
대체 사용자별 구성 파일을 지정합니다. 명령줄에 구성 파일이 제공되면 시스템 전체 구성 파일(/etc/ssh/ssh_config)이 무시됩니다. 사용자별 구성 파일의 기본값은 ~/.ssh/config입니다.
다음을 사용하여 SSH 키를 지정할 수 있습니다.-i
:
-나Identity_file
공개키 인증을 위한 ID(개인키)를 읽어오는 파일을 선택합니다. 기본값은 ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ed25519 및 ~/.ssh/id_rsa입니다. 구성 파일에서 호스트별로 ID 파일을 지정할 수도 있습니다. 여러 -i 옵션(및 구성 파일에 지정된 여러 ID)을 가질 수 있습니다. CertificateFile 지시어에 의해 인증서가 명시적으로 지정되지 않은 경우 ssh는 ID 파일 이름에 -cert.pub를 추가하여 얻은 파일 이름에서 인증서 정보를 로드하려고 시도합니다.
다음과 같이 파일 이름을 지정하기 위해 "~"를 사용하여 명령을 실행하는 경우:
ssh -F ~/some/config/file ...
그러면 "~"는 ssh가 아닌 쉘에서 해석됩니다.