SSH의 기본 구성

SSH의 기본 구성

가장 기본적인 SSH 구성의 경우 일반적으로 다음을 수행합니다.

nano /etc/ssh/sshd_config && service ssh restart # Genral basic configuration like disabling all root logins;
nano ~/.ssh/authorized_keys && service ssh restart # Put your public keys inside;
chmod ~/.ssh 700
chmod ~/.ssh/authorized_keys 600
ssh USER@IP -vvv -L 22:localhost:22 # or [email protected] # Tunnel via SSH with verbose debugging

이 일을 해야 할지 궁금합니다 chmod ~/.ssh 700 -R.

제가 채팅으로 이 질문을 했더니 terdon이 이렇게 대답했습니다.

chmod ~/.ssh 700 -R이 방금 구성에서 읽기 액세스를 제거했기 때문에 ssh가 중단되기를 바랍니다.

이후 700소유자와 동일한 그룹의 사용자 및 루트가 아닌 다른 모든 사용자는 실제로 SSH 데이터를 읽을 수 없습니다.

소유자에게 읽기 권한이 있는 한 문제가 됩니까?

답변1

chmod ~/.ssh 700 -R이 방금 구성에서 읽기 액세스를 제거했기 때문에 ssh가 중단되기를 바랍니다.

어, 아니?

-bash-4.2$ chmod -R 700 .ssh
-bash-4.2$ logout
...
% ssh somelinooxbox
...
-bash-4.2$ ls -l .ssh/authorized_keys
-rwx------ 1 jhqdoe xxxxxx 178 Aug 10  2018 .ssh/authorized_keys
-bash-4.2$ 

따라서 비사용자의 경우 이것은 실제로 Centos7 테스트 호스트에서는 문제가 되지 않습니다 root( root그것도 괜찮습니다 chmod -R 700 ~/.ssh).

관련 질문은 " sshd프로세스가 어떤 사용자로 실행됩니까?"입니다. root또는 사용자라고 추측할 수 있습니다. root일반적으로 모든 파일을 읽을 수 있으며(NFS 또는 암호화된 홈 디렉토리에 대한 다양한 예외 제외) 사용자는 해당 파일로 표시된 파일을 읽는 데 문제가 없습니다 rwx. 우리는 추측할 필요가 없습니다:

% ssh -o ControlMaster=no somelinooxbox
...
-bash-4.2$ sudo sysdig -p %user.uid fd.name = ~/.ssh/authorized_keys

그런 다음 다른 곳에서 새로운 연결이 이루어집니다. sysdig표시된 프로세스는 ~/.ssh/authorized_keys사용자가 실행한 후에도 chmod -R 700 ...충분한 권한이 있는 경우에도 사용자가 연결하면서 실행 중인 것으로 읽혀집니다.

물론, 스트레이 +x비트를 추가하는 것은 기껏해야 불필요하며, 더 나쁜 경우에는 실제로는 안 되는 일부 실행 파일이 생성될 수 있으므로 X해당 팁에 대한 다른 답변을 참조하거나 그렇지 않으면 디렉터리가 0700, 파일이 0600을 가져오는지 확인하세요.

(selinux나 apparmour와 같은 소프트웨어는 문제를 일으킬 수 있지만 이는 단지 추가적인 문제일 뿐입니다.통조림 꿀벌일반적인 권한보다 높습니다. )

답변2

기호 모드는 어떻습니까? 대부분의 현대인들은 chmod(모두는 아니지만) 이것을 할 수 있습니다.

chmod -R go=,u=rwX ~/.ssh

이렇게 하면 디렉터리에 대한 실행 권한만 부여되고, 그룹 및 다른 사용자에 대한 권한은 제거되며, 전체 권한이 부여됩니다.

관련 정보