SSH 니 가 아 는 거 랑 모 르 는 거.

7991 단어
더 멋 진 문장https://deepzz.com Desc: SSH 와 관련 된 사용 기법 은. ssh/config 로 작업 절 차 를 간소화 합 니 다.
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 의 경 로 를 지정 합 니 다. 값 은 직접 지정 할 수도 있 고 매개 변수 로 대체 할 수도 있 습 니 다.
  • % L 로 컬 호스트 이름 의 첫 번 째 구성 요소
  • % l 로 컬 호스트 이름 (도 메 인 이름 포함)
  • % h 원 격 호스트 이름 (명령 행 입력)
  • % n 원 격 원본 호스트 이름
  • % p 원 격 호스트 포트
  • % r 원 격 로그 인 사용자 이름
  • % u 로 컬 ssh 에서 사용 중인 사용자 이름
  • % i 로 컬 ssh 에서 uid
  • 사용 중
  • % C 값 이% l% h% p% r 인 hash
  • Control Path 의 유일한 것 을 최대한 유지 하 세 요.최소한% h,% p,% r (또는% C) 를 포함 합 니 다.
    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 를 허용 하 는 읽 기 인증 파일 경 로 를 지정 합 니 다.값 은 직접 지정 할 수도 있 고 매개 변수 로 대체 할 수도 있 습 니 다.
  • % d, 로 컬 사용자 디 렉 터 리 ~
  • % u, 로 컬 사용자
  • % l, 로 컬 호스트 이름
  • % h, 원 격 호스트 이름
  • % r, 원 격 사용자 이름
  • Localcand 는 연결 이 성공 한 후 로 컬 호스트 가 실행 할 명령 (단순 로 컬 명령) 을 지정 합 니 다.% d,% h,% l,% n,% p,% r,% u,% C 를 사용 하여 일부 인 자 를 교체 할 수 있 습 니 다.PermitLocalcand 가 열 린 상태 에서 만 유효 합 니 다.
    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

    좋은 웹페이지 즐겨찾기