효율 업그레이드 의 교묘 한 SSH 업그레이드 배치 프로그램
ssh [email protected]
// server
cd app
git pull
// git
docker-compose restart server
매번 업데이트 할 때마다 6 단계 가 필요 합 니 다. 그 중에서 두 부 는 비밀 번 호 를 입력 해 야 합 니 다. 매일 몇 번 씩 실 행 됩 니 다. 저 처럼 게 으 른 프로그램 원숭이 는 정말 참 을 수 없습니다. 어떻게 6 단 계 를 원 키 로 바 꾸 어 실행 할 수 있 습 니까?원 키 로 실행 하려 면 비밀 번 호 를 입력 할 수 없 지만 비밀 번 호 는 스 크 립 트 에 명문 으로 쓸 수 없어 안전 하지 않 습 니 다.이 문 제 를 해결 하려 면 비밀 번 호 를 입력 하 는 번 거 로 움 을 없 애기 위해 SSH 의 OpenSSH Key 를 사용 하여 인증 해 야 합 니 다.예 를 들 어 우 리 는 Linux server 에 로그 인 하려 면 다음 과 같은 절차 만 필요 합 니 다.
ssh -i ~/.ssh/ec2.pem [email protected]
구체 적 인 실현 절차 도 비교적 간단 합 니 다.ssh-keygen -t rsa -b 2048 -v
key 의 이름 을 입력 해 야 합 니 다: ec2, 비밀 번 호 를 설정 하지 마 십시오.완료 후 ec2 와 ec2. pub 두 파일 을 생 성하 여 pem 파일
mv ./ec2 ~/.ssh/ec2.pem
이름 을 바 꿉 니 다.ssh-copy-id -i ./ec2.pub [email protected]
// server
ssh -i ~/.ssh/ec2.pem [email protected]
암호 없 이 server 에 로그 인 한 후에 git 암호 문 제 를 해결 해 야 합 니 다. 사실은 상기 원리 와 차이 가 많 지 않 지만 절차 가 다 르 기 때문에 구체 적 인 과정 은 GitHub 도움말 문 서 를 참조 할 수 있 습 니 다.그 다음 에 repo 의 url 을
git remote set-url origin [email protected]:*USERNAME*/*OTHERREPOSITORY*.git
로 설정 합 니 다. 만약 에 코드 가 github 에서 위탁 관리 되 었 다 면 문서 절차 에 따라 OK 입 니 다. 그러나 우리 가 사용 하 는 git 는 회사 내부 의 것 입 니 다. git 서비스 ssh 의 포트 는 5442 로 바 뀌 었 습 니 다. 상기 절 차 를 마치 고도 git 서버 에 연결 되 지 않 습 니 다. 우 리 는 추가 설정 을 해 야 합 니 다. 열 거나 ~ / ssh / config 를 만 들 고 다음 설정 을 추가 해 야 합 니 다.호스트 my. git. com \ # git 창고 주소 포트 5442 IdentityFile ~ /. ssh / idrsa_git \ # 생 성 된 pem 파일 이름
지금까지 암호 없 는 로그 인 에 대한 수 요 는 만족 되 었 습 니 다. 배치 절 차 는 4 단계 가 필요 합 니 다.
ssh ~/.ssh/ec2.pem [email protected]
cd app
git pull
docker-compose restart server
ssh 는 로 컬 에서 서버 명령 을 직접 실행 합 니 다. 예 를 들 어 앞의 두 단 계 는 한 줄 에 놓 을 수 있 습 니 다.
ssh ~/.ssh/ec2.pem [email protected] cd app
이렇게 되면 server 의 app 디 렉 터 리 로 바로 들 어 갑 니 다.여러 명령 을 수행 하려 면 명령 사이 에 & & 를 추가 하여 실현 할 수 있 습 니 다.
ssh ~/.ssh/ec2.pem [email protected] cd app && git pull && docker-compose restart server
그러나 뜻 대로 되 지 않 습 니 다. & & 뒤의 명령 은 server 에서 실행 되 지 않 고 local 에서 실 행 됩 니 다. 원래 셸 은
ssh ~/.ssh/ec2.pem [email protected] cd app
을 첫 번 째 local 명령 으로 분 석 했 습 니 다. git pull
은 두 번 째 local 명령 이 었 기 때문에 두 번 째 명령 은 server 에서 실행 되 지 않 았 습 니 다.이 문 제 를 해결 하려 면 사실 매우 간단 하 다. server 에서 실 행 된 몇 가지 명령 앞 뒤 에 단일 / 더 블 따옴표 만 추가 하면 된다.ssh ~/.ssh/ec2.pem [email protected] "cd app && git pull && docker-compose restart server"
원 키 업그레이드 의 목 표 는 이미 달성 되 었 지만 명령 이 너무 길 어서 매번 입력 을 업그레이드 하거나 copy 가 이렇게 긴 명령 도 매우 고통스럽다.우 리 는 셸 의 alias 특성 을 빌려 실현 할 수 있다. 즉,
echo alias myserver='ssh ~/.ssh/ec2.pem [email protected]' >> ~/.zshrc #.bashrc
echo alias update_myserver='myserver "cd app && git pull && docker-compose restart server"' >> ~/.zshrc #.bashrc
결국 두 드 리 기만 하면
update_myserver
한 번 프로그램의 업그레이드 배 치 를 완성 할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.