>운영 및 유지보수 >리눅스 운영 및 유지 관리 >Linux SSH에서 사용되는 방법은 무엇입니까?

Linux SSH에서 사용되는 방법은 무엇입니까?

王林
王林앞으로
2023-05-22 23:58:131325검색

openssh 소프트웨어 패키지에는 다음 명령이 포함되어 있습니다.

sshd ―― ssh 서버 프로그램
sftp-server ―― sftp 서버 프로그램(ftp와 유사한 프로토콜이지만 데이터 암호화 제공)
scp ―― 비대화형 sftp- 서버 클라이언트 , 서버
sftp - 대화형 SFTP 서버 클라이언트에 파일을 업로드/다운로드하는 데 사용되며 사용법은 ftp 명령과 동일합니다.
slogin —— ssh의 별칭
ssh —— 원격 시스템에 로그인하거나 원격으로 명령을 실행하는 데 사용되는 ssh 프로토콜의 클라이언트 프로그램
ssh-add —— dsa 키를 추가하는 데 사용되는 ssh 에이전트 관련 프로그램 ssh 에이전트
ssh-agent ―― ssh 에이전트
ssh-keyscan ―― ssh 공개 키 생성기

ssh를 사용하는 가장 일반적으로 사용되는 방법은 원격 로그인을 텔넷으로 대체하는 것입니다. Telnet의 비밀번호 로그인과 달리 ssh는 publickey, keybord Interactive, gssapi 등과 같은 여러 로그인 방법도 지원합니다. 시스템 비밀번호를 입력하는 방법이 한 가지인 telnet과 달리. 현재 가장 일반적으로 사용되는 로그인 방법은 기존 비밀번호 및 공개 키 로그인 방법입니다. 다음은 이러한 두 가지 로그인 방법의 사용법을 설명하기 위해 redhat as4를 예로 들어 설명합니다.

[root@mail ~]# ssh 172.18.6.227
호스트 '172.18.6.227 (172.18.6.227)'의 신뢰성을 확인할 수 없습니다.
rsa 키 지문은 43:80:f2:e1:9b:b6 :6e:c0:e2:dd:57:8f:ed:89:b3:81.
계속 연결하시겠습니까(예/아니요)? 예
경고: '172.18.6.227′(rsa)이 영구적으로 추가되었습니다. 알려진 호스트 목록으로.
root@172.18.6.227의 비밀번호:
마지막 로그인: thu jul 12 18:47:47 2007 from 172.18.6.130
[root@qmail ~]#

첫 번째 로그인 후 ssh 원격 시스템이 시스템을 다시 설치했고 SSH 지문이 변경된 경우에는 Know_hosts 파일에서 해당 지문을 삭제해야 합니다. .ssh 디렉터리에 다시 로그인하고 로그인하기 전에 예라고 대답하세요. .ssh 디렉토리는 "."으로 시작하는 숨겨진 디렉토리이며 이를 보려면 ls –a 매개변수가 필요합니다. 또한 이 디렉터리의 권한은 700이어야 하며 사용자의 홈 디렉터리는 다른 사용자에게 쓰기 권한을 부여할 수 없습니다. 그렇지 않으면 SSH 서버가 로그인을 거부합니다. 로그인이 되지 않는 경우, 서버의 /var/log/secure 로그 파일을 확인하시기 바랍니다. 로그인이 안되는 이유는 대개 금방 찾을 수 있습니다.

ssh 원격 실행 명령:

[root@mail ~]# ssh 172.18.6.227 ls -l /
root@172.18.6.227 비밀번호:
총 1244
drwxr-xr-x 2 루트 루트 4096 jun 26 04:02 bin
drwxr-xr-x 4 루트 루트 4096 3월 29 11:17 boot
drwxr-xr-x 2 루트 루트 4096 jan 25 11:26 command
drwxr-xr-x 15 루트 루트 4096 6월 12 20 :09 data
drwxr-xr-x 9 루트 루트 5360 jul 2 13:38 dev
drwxr-xr-x 87 루트 루트 12288 jul 11 ​​​​04:02 etc
drwxr-xr-x 20 루트 루트 4096 apr 10 10 :5 4 home
drwxr-xr-x 2 root root 4096 aug 13 2004 initrd

올바른 비밀번호를 입력한 후 ssh는 원격 서버의 sshd 서버 프로그램에 연결한 다음
ls –l / 명령을 실행합니다. 원격 서버를 선택하고 로컬 서버로 전송된 결과를 입력합니다. 이는 원격 서버에 먼저 로그인한 후 ls –l / 명령을 실행하고 마지막으로 서버에서 로그아웃하는 것과 같습니다. 서버에 로그인하고 두 개 이상의 명령을 실행해야 하는 경우 명령을 작은따옴표나 큰따옴표로 묶어야 한다는 점을 기억해야 합니다.

ssh 172.18.6.227 “cd /root && ls “

ssh's Remote 실행 명령 이 기능은 원래 r 시리즈 명령을 대체하는 데 사용되었습니다. ssh가 등장하기 전에 시스템 관리자는 동일한 작업을 완료하기 위해 rexec 및 rsh와 같은 안전하지 않은 원격 실행 명령 도구를 사용해야 했습니다. 이 기능은 많은 수의 시스템을 관리할 때 매우 유용합니다. 예를 들어 10.0.0.0/24 네트워크 세그먼트의 모든 서버를 다시 시작하려면 다음 명령만 입력하면 됩니다.

for i in $(seq 1 254); do ssh 10.0.0.${i} 재부팅 ; done

모든 서버를 다시 시작하는 작업을 완료할 수 있지만 더 이상 각 서버에 로그인할 필요가 없다고 말할 수도 있습니다. 매번 비밀번호를 입력하는 것은 매우 번거로운 작업입니다. 걱정하지 마십시오. 아래에서 설명할 내용은 SSH 공개 키 방법을 사용하여 로그인하여 문제를 해결하는 것입니다.

공개 키를 사용하여 로그인:

openssh의 ssh-keygen 명령은 개인 및 공개 키를 생성하는 데 사용됩니다.

[root@mail ~]# ssh-keygen -b 1024 -t dsa -c gucuiwen@myserver.com
공개/개인 dsa 키 쌍 생성
#프롬프트가 생성 중입니다. 4096 길이를 선택하면 시간이 오래 걸립니다
키를 저장할 파일을 입력하세요(/root/.ssh/id_dsa):
#공개 키와 개인 키를 저장할 위치를 묻고 Enter를 눌러 기본 위치를 사용하세요
암호 입력(암호가 없는 경우 비어 있음) ):
# 개인 키 암호를 입력하라는 메시지가 표시됩니다. 자동 로그인을 위해서는 암호를 직접 입력하면 안 됩니다.
동일한 암호를 다시 입력하세요.
# 암호를 다시 입력하라는 메시지가 표시되고
ID를 다시 누르세요. /root/.ssh/id_dsa에 저장되었습니다.
공개 키는 /root/.ssh/id_dsa.pub.
# 공개 키와 개인 키가 /root/.ssh에 저장되어 있는지 확인하세요. / 디렉터리
키 지문은 다음과 같습니다.
71:e5:cb: 15:d3:8c:05:ed:05:84:85:32:ce:b1:31:ce gucuiwen@myserver.com
# 프롬프트 키 지문

지침:
-b 1024 1024바이트 길이를 사용하세요. 공개 키/개인 키 쌍은 최대 4096바이트일 수 있으며, 일반적으로 1024 또는 2048바이트입니다. 너무 길면 암호화 및 암호 해독에 오랜 시간이 걸립니다.
-t dsa dsa 암호화 방식을 사용하는 공개 키/개인 키 쌍에는 rsa 방식도 있습니다. rsa 방식의 최소 길이는 768바이트보다 작을 수 없습니다.
-c gucuiwen@myserver.com 이 공개 키/개인 키 쌍에 대한 설명 및 설명으로, 일반적으로 소유자의 이메일로 대체됩니다. 다른 매개변수를 더 보려면 man ssh-keygen을 사용하세요.

[root@mail ~]# ls -l /root/.ssh
total 16
-rw——- 1 루트 루트 668 jul 12 20:07 id_dsa
-rw-r–r– 1 루트 루트 611 jul 12 20:07 id_dsa.pub
-rw-r–r– 1 루트 루트 222 jul 12 19:37 Known_hosts

에 의해 생성된 공개/개인 키 파일은 사용자 홈 디렉터리의 .ssh 디렉터리에 있습니다. 여기서 id_dsa.pub key는 공개키 파일이며, 생성된 공개키를 로그인할 서버의 사용자 디렉터리에 해당하는 홈 디렉터리의 .ssh 디렉터리에 업로드합니다. 다시 한번 강조하지만, 사용자 자신의 디렉터리(홈 디렉터리) .ssh 디렉토리 권한은 700이어야 합니다. 즉, 사용자 자신 외에는 누구도 디렉토리를 읽거나 쓰거나 볼 수 있는 권한이 없습니다. 그렇지 않으면 SSH 서버가 로그인을 거부합니다. . SSH의 기본 공개 키 파일은 사용자 홈 디렉터리의 .ssh 디렉터리에 있는 Authorized_keys 파일입니다. 따라서 생성된 공개 키는 이 파일 이름으로 서버의 /root/.ssh/ 디렉터리에 저장되어야 합니다. 파일은 이 파일에 저장될 수 있습니다. 클라이언트의 공개 키 파일은 하나의 자물쇠가 열려 있는 한 여러 개의 자물쇠와 다양한 키를 가질 수 있는 문과 같습니다. 서버에 배치하면 다음과 같아야 합니다:

개인 키에는 600개의 권한이 있어야 합니다. 그렇지 않으면 SSH 서버가 사용자의 로그인을 거부합니다.

대략 이런 모습입니다. 이제 /etc/ssh/ssh_config 및 /etc/ssh/sshd_config의 구성에 대해 이야기하겠습니다.

/etc/ssh/ssh_config:


host *
"host" 옵션은 다음 문자열과 일치할 수 있는 컴퓨터에만 유효합니다. "*"는 모든 컴퓨터를 나타냅니다.

forwardagent no
"forwardagent"는 인증 에이전트(존재하는 경우)를 통해 연결이 원격 컴퓨터로 전달되는지 여부를 설정합니다.

forwardx11 no
"forwardx11"은 x11 연결이 자동으로 보안 채널 및 디스플레이 세트로 리디렉션되는지 여부를 설정합니다.

rhostsauthentication no
"rhostsauthentication"은 rhosts 기반 보안 검증을 사용할지 여부를 설정합니다.

rhostsrsaauthentication no
"rhostsrsaauthentication"은 rsa 알고리즘을 사용하여 rhosts 기반 보안 인증을 사용할지 여부를 설정합니다.

rsaauthentication yes
"rsaauthentication"은 보안 검증에 rsa 알고리즘을 사용할지 여부를 설정합니다.

passwordauthentication yes
"passwordauthentication"은 비밀번호 인증 사용 여부를 설정합니다.

fallbacktorsh no
"fallbacktorsh"는 ssh로 접속 시 오류가 발생하면 자동으로 rsh를 사용할지 여부를 설정합니다.

usersh no
"usersh"는 이 컴퓨터에서 "rlogin/rsh"를 사용할지 여부를 설정합니다.

batchmode no
"batchmode"가 "yes"로 설정되면 암호/비밀번호(대화형 비밀번호 입력) 프롬프트가 비활성화됩니다. 이 옵션은 대화형 암호 입력이 불가능한 스크립트 파일 및 배치 작업에 유용합니다.

checkhostip yes
"checkhostip"은 DNS 스푸핑을 방지하기 위해 SSH가 서버에 연결된 호스트의 IP 주소를 확인하는지 여부를 설정합니다. "예"로 설정하는 것이 좋습니다.

stricthostkeychecking no
"stricthostkeychecking"이 "yes"로 설정된 경우 ssh는 컴퓨터의 키를 "$home/.ssh/known_hosts" 파일에 자동으로 추가하지 않으며 컴퓨터의 키가 변경되면 연결이 거부됩니다.

identityfile ~/.ssh/identity
"identityfile"은 사용자의 RSA 보안 확인 ID를 읽을 파일을 설정합니다.

port 22
"port"는 원격 호스트에 연결할 포트를 설정합니다.

cipher 복어
"cipher"는 암호화를 위한 비밀번호를 설정합니다.

escapechar ~
"escapechar"는 이스케이프 문자를 설정합니다.

/etc/ssh/sshd_config:


port 22
"port"는 sshd 수신을 위한 포트 번호를 설정합니다.

listenaddress 192.168.1.1
"listenaddress"는 SSHD 서버에 바인딩된 IP 주소를 설정합니다.

hostkey /etc/ssh/ssh_host_key

"hostkey" 설정은 컴퓨터의 개인 키가 포함된 파일입니다.

serverkeybits 1024
"serverkeybits"는 서버 키의 비트 수를 정의합니다.

loggingracetime 600
"loggingracetime"은 사용자가 성공적으로 로그인할 수 없는 경우 연결을 끊기 전에 서버가 기다려야 하는 시간(초)을 설정합니다.

keyregenerationinterval 3600
"keyregenicinterval"은 (키가 사용되는 경우) 서버의 키가 자동으로 재생성되는 시간(초)을 설정합니다. 키 재지정은 가로챈 메시지가 도난당한 키를 사용하여 해독되는 것을 방지하는 데 사용됩니다.

permitrootlogin no
"permitrootlogin"은 루트가 SSH를 사용하여 로그인할 수 있는지 여부를 설정합니다. 이 옵션을 "yes"로 설정하면 안 됩니다.

ignorerhosts yes
"ignorerhosts"는 검증 시 "rhosts" 및 "shosts" 파일을 사용할지 여부를 설정합니다.

ignoreuserknownhosts yes
"ignoreuserknownhosts"는 rhostsrsauthentication 보안 확인을 수행할 때 ssh 데몬이 사용자의 "$home/.ssh/known_hosts"를 무시할지 여부를 설정합니다.

strictmodes yes
"strictmodes"는 로그인 요청을 받기 전에 ssh가 사용자의 홈을 확인할지 여부를 설정합니다. 디렉토리 및 rhosts 파일의 권한 및 소유권. 초보자는 모든 사람이 쓰기 액세스 권한을 갖도록 디렉터리와 파일을 설정하는 경우가 많기 때문에 이는 종종 필요합니다.

x11forwarding no
"x11forwarding"은 x11 전달 허용 여부를 설정합니다.

printmotd yes
"printmotd"는 사용자가 로그인할 때 "/etc/motd"에 정보를 표시할지 여부를 sshd에서 설정합니다.

syslogfacility auth
"syslogfacility"는 sshd에서 메시지를 기록할 때 "시설 코드"를 제공할지 여부를 설정합니다.

loglevel info
"loglevel"은 sshd 로그 메시지가 기록되는 수준을 설정합니다. 정보는 좋은 선택입니다. 자세한 내용은 sshd 매뉴얼 페이지를 확인하세요.

rhostsauthentication no
보안 확인을 위해 "rhostsauthentication" 설정이 rhosts 또는 "/etc/hosts.equiv"만 사용하기에 충분한가요?

rhostsrsaauthentication no
"rhostsrsa" 설정은 rhosts 또는 "/etc/hosts.equiv"와 rsa를 사용하여 보안 확인을 허용할지 여부를 설정합니다.

rsaauthentication yes
"rsaauthentication" 설정은 rsa 보안 확인만 허용합니다.

passwordauthentication yes
"passwordauthentication"은 비밀번호 확인 허용 여부를 설정합니다.

permitemptypasswords no
"permitemptypasswords"는 비밀번호가 비어 있는 계정으로 로그인을 허용할지 여부를 설정합니다.

allowusers admin
"allowusers" 뒤에는 사용자 이름과 일치하는 문자열(패턴) 또는 user@host와 같은 일치하는 문자열이 올 수 있습니다. 이러한 문자열은 공백으로 구분됩니다. 호스트 이름은 DNS 이름이거나 IP 주소일 수 있습니다.

ssh2 호환 형식의 공개 키를 openssh 호환 형식으로 변환하세요

ssh-keygen -i -f Identity.pub >> /root/.ssh/authorized_keys2

위 내용은 Linux SSH에서 사용되는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제