SSH 니 가 아 는 거 랑 모 르 는 거.
SSH (Secure Shell) 가 무엇 입 니까?응용 층 과 전송 층 을 바탕 으로 하 는 안전 프로 토 콜 로 컴퓨터 의 셸 (하우징) 에 안전 한 전송 과 사용 환경 을 제공 합 니 다.원 격 로그 인 세 션 과 다른 네트워크 서비스 에 보안 을 제공 하 는 프로 토 콜 이기 도 합 니 다.그것 은 원 격 관리 과정 에서 의 정보 유출 문 제 를 효과적으로 방지 할 수 있다.SSH 를 통 해 전 송 된 모든 데 이 터 를 암호 화 할 수 있 고 DNS 사기 와 IP 사 기 를 방지 할 수 있다.
SSH Key 생 성 방법 은 Github ssh key 생 성, 서버 비밀 로그 인 면제 방법 을 참고 하 시기 바 랍 니 다.여 기 는
id_ecdsa
(비밀 키) 와 id_ecdsa.pub
(공개 키) 를 예 로 들 수 있 습 니 다.이 글 은 주로 SSH 와 관련 된 사용법 을 소개 한다.
~/.ssh/config
파일 에 대한 설정 을 통 해 SSH 와 관련 된 작업 을 크게 간소화 할 수 있 습 니 다. 예 를 들 어:Host example # 关键词
HostName example.com # 主机地址
User root # 用户名
# IdentityFile ~/.ssh/id_ecdsa # 认证文件
# Port 22 # 指定端口
실행
$ ssh example
을 통 해 나 는 나의 서버 에 로그 인 할 수 있다.더 많은 명령 을 내 릴 필요 가 없다 $ ssh [email protected]
.서버 에 파일 을 전송 하려 면 $ scp a.txt example:/home/user_name
예전 보다 훨씬 편리 해 졌 다.관련 도움말 문 서 를 참고 하 십시오
$ man ssh_config 5
.프로필
SSH 설정 파일 은 두 개 입 니 다:
$ ~/.ssh/config # 用户配置文件
$ /etc/ssh/ssh_config # 系统配置文件
다음은 자주 사용 하 는 설정 매개 변 수 를 살 펴 보 겠 습 니 다.
Host 는 SSH 명령 을 실행 할 때 이 설정 에 어떻게 일치 하 는 지 사용 합 니 다.
*
모든 호스트 이름 과 일치 합 니 다.*.example.com
. example. com 으로 끝 납 니 다.!*.dialup.example.com,*.example.com
로!처음 엔 배제 라 는 뜻 이다.192.168.0.?
, 192.168.0 [0 - 9] 의 IP 와 일치 합 니 다.AddKeysToAgent 가 자동 으로 key 를
ssh-agent
에 추가 할 지 여부 입 니 다. 값 은 no (default)/confirm/ask/yes 입 니 다.yes 라면 키 와 비밀 번 호 는 파일 을 읽 고 에이전트 에 가입 합 니 다.
ssh-add
와 같 습 니 다.기 타 는 각각 문의, 확인, 불 가입 의 뜻 이다.ssh - agent 에 추가 하 는 것 은 개인 키 와 비밀 번 호 를 관리 에 맡 기 고 인증 을 하도록 하 는 것 을 의미 합 니 다.Address Family 가 연결 할 때 사용 할 주소 족 을 지정 합 니 다. 값 은 any (default)/inet (IPv 4)/inet 6 (IPv 6) 입 니 다.
BindAddress 가 연결 할 때 사용 할 로 컬 호스트 주 소 를 지정 합 니 다. 시스템 에 여러 주소 가 있 을 때 만 유용 합 니 다.Use Privileged Port 값 이 yes 일 때 유효 하지 않 습 니 다.
Challenge Response Authentication 이 지원 하 는 인증 chanllenge, yes (default)/no 에 응답 하 는 지 여부 입 니 다.
Compression 을 압축 할 지 여부 입 니 다. 값 은 no (default)/yes 일 수 있 습 니 다.
CompressionLevel 압축 레벨, 값 은 1 (fast) - 9 (slow) 일 수 있 습 니 다.6 (default), gzip 에 해당 합 니 다.
ConnectionAttempts 종료 전에 연결 을 시도 하 는 횟수 입 니 다. 값 은 정수, 1 (default) 이 어야 합 니 다.
ConnectTimeout 연결 SSH 서버 시간 초과, 단위 s, 기본 시스템 TCP 시간 초과.
ControlMaster 가 단일 네트워크 를 열 어 여러 개의 session 을 공유 할 지 여부 입 니 다. 값 은 no (default)/yes/ask/auto 일 수 있 습 니 다.controlPath 와 함께 사용 해 야 합 니 다. 값 이 yes 일 때 ssh 는 이 경로 의 control socket 을 감청 합 니 다. 여러 session 은 이 socket 을 연결 합 니 다. 가능 한 한 이 네트워크 연결 을 재 구축 하 는 것 이 아 닙 니 다.
controlPath 는 control socket 의 경 로 를 지정 합 니 다. 값 은 직접 지정 할 수도 있 고 매개 변수 로 대체 할 수도 있 습 니 다.
ControlPersist 는 ControlMaster 와 결합 하여 사용 합 니 다. 연결 이 열 린 후 배경 이 유지 되 는 시간 을 지정 합 니 다.값 은 no/yes/정수, 단위 s 일 수 있 습 니 다.no 라면 최초의 클 라 이언 트 가 닫 히 면 닫 습 니 다.만약 yes/0, 무기한, 죽 이거 나 다른 메커니즘 을 통과 할 때 까지, 예 를 들 어 ssh - O exit.
Gateway Ports 는 원 격 호스트 가 로 컬 퍼 가기 포트 에 연결 할 수 있 는 지 여 부 를 지정 합 니 다. 값 은 no (default)/yes 일 수 있 습 니 다.기본 적 인 상황 에서 ssh 는 로 컬 루프 주소 에 포트 전송 기 를 연결 합 니 다.
HostName 실제 호스트 이름, 기본 값 은 명령 행 이 입력 한 값 (IP 허용) 입 니 다.% h 를 사용 할 수 있 습 니 다. 바 꾼 주소 가 완전 하면 ok 입 니 다.
IdentitiesOnly 지정 ssh 는 설정 파일 이 지정 한 idenity 와 certificate 파일 만 사용 하거나 ssh 명령 행 을 통 해 인증 을 통과 할 수 있 습 니 다. ssh - agent 나 PKCS 11 Provider 가 여러 개의 identities 를 제공 하 더 라 도.값 은 no (default)/yes 일 수 있 습 니 다.
Identity File 은 DSA, ECDSA, Ed 25519 또는 RSA 를 허용 하 는 읽 기 인증 파일 경 로 를 지정 합 니 다.값 은 직접 지정 할 수도 있 고 매개 변수 로 대체 할 수도 있 습 니 다.
Local Forward 는 로 컬 호스트 의 포트 를 지정 하여 ssh 를 통 해 원 격 호스트 로 전송 합 니 다.형식: LocalForward [bid address:] post host: hostport, IPv 6 지원.
Password Authentication 에서 비밀 번 호 를 사용 하여 인증 할 지 여부 입 니 다. yes (default)/no.
PermitLocalcand 에서 Localcand 를 지정 할 수 있 는 지 여부 입 니 다. 값 은 no (default)/yes 일 수 있 습 니 다.
Port 는 원 격 호스트 에 연결 할 포트 를 지정 합 니 다. 22 (default).
Proxy Command 에서 연 결 된 서버 가 실행 할 명령 을 지정 합 니 다.%h,%p,%r
프 록 시 명령/usr/bin/nc - X connect - x 192.0.2.0: 8080% h% p
사용자 로그 인 사용자 이름
관련 기교
여러 그룹 키 쌍 관리
여러 서버 에 서로 다른 키 쌍 이 있 을 때 가 있 습 니 다. 매번 지정
-i
인 자 를 통과 하 는 것 도 매우 불편 합 니 다.예 를 들 어 github 와 coding 을 사용 합 니 다.다음 설정 을 추가 해 야 합 니 다 ~/.ssh/config
:Host github
HostName %h.com
IdentityFile ~/.ssh/id_ecdsa_github
User git
Host coding
HostName git.coding.net
IdentityFile ~/.ssh/id_rsa_coding
User git
coding 의 어떤 창 고 를 복제 할 때:
# 原来
$ git clone [email protected]:deepzz/test.git
# 现在
$ git clone coding:deepzz/test.git
vim 원 격 파일 접근
vim 는 원 격 서버 의 파일 을 직접 편집 할 수 있 습 니 다:
$ vim scp://example/docker-compose.yml
원 격 서 비 스 를 로 컬 로 사용 하 다.
Local Forward 를 통 해 로 컬 포트 의 데이터 트 래 픽 을 ssh 를 통 해 원 격 호스트 의 지정 한 포트 로 전송 합 니 다.로 컬 서 비 스 를 사용 하 는 것 같 습 니 다. 사실 원 격 서 비 스 를 사용 하고 있 습 니 다.원 격 서버 에서 Postgres, 포트 5432 (외부 에 노출 되 지 않 은 포트) 가 실행 되 고 있 습 니 다.그럼, 당신 은 할 수 있 습 니 다.
Host db
HostName db.example.com
LocalForward 5433 localhost:5432
원 격 호스트 에 연결 할 때 로 컬 에서 5433 포트 를 열 고 이 포트 의 데 이 터 를 ssh 를 통 해 원 격 서버 의 5432 포트 로 전송 합 니 다.
우선, 연결 만 들 기:
$ ssh db
그 후에 Postgres 클 라 이언 트 를 통 해 로 컬 5433 포트 를 연결 할 수 있 습 니 다.
$ psql -h localhost -p 5433 orders
다 중 접속 공유
다 중 접속 공유 란 무엇 입 니까?여러 개의 셸 창 을 열 때 같은 서버 에 연결 해 야 합 니 다. 사용자 이름, 비밀 번 호 를 입력 하거나 연결 을 기다 리 고 싶 지 않 으 면 다음 설정 을 추가 해 야 합 니 다
~/.ssh/config
.ControlMaster auto
ControlPath /tmp/%r@%h:%p
비밀번호 로 로그 인 하지 않 기
서버 보안 에 대한 요구 가 높다 면 비밀번호 로그 인 을 사용 하지 않 는 것 이 필수 입 니 다.비밀 번 호 를 사용 하여 서버 에 로그 인 하면 폭력 적 으로 해 제 된 공격 을 받 기 쉬 우 며, 일정한 안전 위험 이 있 기 때문이다.그러면 서버 의 시스템 프로필 을 편집 해 야 합 니 다
/etc/ssh/sshd_config
:PasswordAuthentication no
ChallengeResponseAuthentication no
키워드 로그 인
더 편리 한 로그 인 서버 를 위해 서 는 사용자 이름과 호스트 이름 을 생략 하고 키워드 로 로그 인 할 수 있 습 니 다.다음 설정 을 추가 해 야 합 니 다
~/.ssh/config
:Host deepzz # 别名
HostName deepzz.com # 主机地址
User root # 用户名
# IdentityFile ~/.ssh/id_ecdsa # 认证文件
# Port 22 # 指定端口
그럼
$ ssh deepzz
을 사용 하면 서버 에 바로 로그 인 할 수 있 습 니 다.에이전트 로그 인
어떤 때 는 서버 에 직접 로그 인 할 수 없 을 수도 있 고 중간 서버 를 사용 하여 중계 해 야 할 수도 있 습 니 다. 예 를 들 어 회사 내 네트워크 서버 와 같 습 니 다.우선 서버 에 공개 키 접근 을 설정 하고 에이전트 forwarding 을 열 었 는 지 확인 하 십시오. 다음 설정 을 추가 해 야 합 니 다
~/.ssh/config
.Host gateway
HostName proxy.example.com
User root
Host db
HostName db.internal.example.com # 目标服务器地址
User root # 用户名
# IdentityFile ~/.ssh/id_ecdsa # 认证文件
ProxyCommand ssh gateway netcat -q 600 %h %p # 代理命令
그럼 이제
$ ssh db
연결 을 사용 하 셔 도 됩 니 다.참고 문서
[1] https://www.freebsd.org/cgi/man.cgi?query=ssh_config
[2] https://zh.wikipedia.org/wiki/Secure_Shell
[3] http://wowubuntu.com/ssh-tips.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.