SSH 자동 로그인을 구현하기 위한 쉘에 대한 자세한 설명
머리말
회사에서는 개발용으로 docker
를 사용합니다. 개발 머신에 로그인할 때마다 항상 ssh user_name@ip_string
을 입력합니다. 그런 다음 password
입력을 확인하세요. 속도가 빠르면 실수를 자주 하게 됩니다. 게으른 사람으로서 트릭을 찾아야 겠습니다. ssh
명령을 확인해보니 서버와의 암호화된 상호작용이 필요하기 때문에 비밀번호로 직접 로그인할 수 있는 옵션이 없어서 어쩔 수 없이 했습니다. 포기하다. docker
,每次登陆自己开发机总要输入 ssh user_name@ip_string
,然后再确认输入password
,手快了还经常会输错。作为一个懒人,肯定要找一个取巧的方式,查看了下ssh
命令,由于它要进行一次跟服务器的加密交互,所以没有直接附带密码登陆的选项,只好作罢。
推荐:《Linux教程》
前些天在同事进行技术分享时,看到他竟然只输入了一行命令./test.sh
就成功登陆了开发机,甚是惊异,于是回来搜索研究了一下,遂成此文。
shell脚本基础
在编写ssh自动登陆脚本之前,先说一下shell脚本的基础,此基础不是一些语法什么的,网上到处都是,这里总结了一下shell脚本的运行机制~
shell脚本的运行方式
首先要说一下shell的几种启动方式,正是踩了脚本启动的坑,才使用原来十分钟就搞定的脚本,花了两个小时才搞定。同时也使得我们运行shell,知其所以然。
通过文件名执行
shell脚本可以直接通过文件名执行,需要注意的是文件需要执行权限。通过 sudo chmod +x ./file_name.sh
来给文件添加执行权限;
指定脚本解释器来执行文件
我们常用的 sh file_name.s
h 就是指定了脚本解释器 /bin/sh
来解释执行脚本;常见的脚本解释器还有:/bin/bash
等,我们可以使用ls -l /bin/*sh
며칠 전 동료들이 기술을 공유하고 있을 때 저는 그는 ./test.sh
명령 한 줄만 입력하여 개발 머신에 성공적으로 로그인했을 때 매우 놀랐고, 다시 찾아와 연구를 하다가 마침내 이 글을 작성하게 되었습니다.
셸 스크립트의 기본
ssh 자동 로그인 스크립트를 작성하기 전에 먼저 셸 스크립트의 기본 사항에 대해 이야기해 보겠습니다. 이 기본 사항은 문법이나 기타 내용이 아니라 인터넷에 있는 모든 내용을 요약한 것입니다. 쉘 스크립트의 메커니즘~
쉘 스크립트 실행 방법
우선 쉘을 시작하는 여러 가지 방법에 대해 이야기해 보겠습니다. 원래 10분 정도 걸리던 스크립트를 사용한 것은 스크립트 시작의 함정 때문이었습니다. 완료. 완료하는 데 2시간이 걸렸습니다. 동시에 쉘을 실행하고 그 이유를 알 수도 있습니다.파일명을 통한 실행셸 스크립트는 파일명을 통해 직접 실행될 수 있습니다. 해당 파일에는 실행 권한이 필요하다는 점에 유의하세요.
sudo chmod +x ./file_name.sh
를 통해 파일에 실행 권한을 추가합니다.
파일을 실행할 스크립트 해석기를 지정합니다
우리는 일반적으로sh file_name.s를 사용합니다. code >h는 스크립트를 해석하고 실행하기 위한 스크립트 해석기 <code>/bin/sh
를 지정합니다. 일반 스크립트 해석기에는 /bin/bash
등이 포함됩니다. 를 사용할 수 있습니다. ls -l /bin/*sh
명령을 사용하여 현재 사용 가능한 스크립트 해석기를 확인하세요.
../file_name 또는 source 명령을 사용하여 스크립트를 실행하세요.
이 방법은 첫 번째 방법과 동일하지 않습니다. 두 가지 방법 스크립트를 실행하기 위해 하위 프로세스를 포크하지만 실행을 위해 현재 쉘 환경을 사용합니다. .bashrc 또는 .bash_profile이 수정되면 현재 변경 사항을 적용하기 위해 쉘을 다시 시작하거나 시스템에 다시 로그인할 필요가 없습니다. 효과.shebang
우리는 쉘 스크립트를 작성할 때 항상 앞에 #!/binbash라는 줄을 추가하는데, 이것이 스크립트의 쉐뱅인데 왜 이렇게 이상한 이름으로 불리는지에 대해 C언어 개발자들은. Unix Dennis Ritchie는 이를 "hash-bang"과 유사할 수 있는 영국식 설명 텍스트라고 불렀습니다. 위키에 설명 게시:컴퓨터 과학에서 shebang은 파운드 기호와 느낌표로 구성된 문자입니다. 텍스트 파일의 첫 번째 줄의 처음 두 문자로 나타나는 Serial을 표시합니다. 파일에 Shebang이 존재하면 Unix 계열 운영체제의 프로그램 로더는 Shebang 이후의 내용을 분석하여 이 내용을 인터프리터 명령어로 사용하고 명령어를 호출하며 Shebang이 포함된 파일 경로를 인터프리터 매개변수로 사용합니다.
간단히 말하면 이 스크립트가 실행될 때 인터프리터를 나타냅니다. 따라서 파일 이름을 사용하여 쉘 스크립트를 직접 실행할 때는 추가로 shebang을 가져와야 하며, 이때 shebang 뒤에 옵션을 직접 추가할 수도 있습니다. 실행 시 기본적으로 옵션을 사용하여 실행합니다. 예를 들어, test.sh의 shebang은 #!/bin/sh -x이고, 스크립트를 실행할 때:./test.sh hello
bin/sh -x ./test.sh hello;
expectinterpreter
expect는 자동 및 대화형을 구현할 수 있는 인터프리터입니다. 또한 일반적인 셸 구문 명령을 해석할 수 있습니다.spawn 명령:
spawn 명령은 하위 프로세스를 분기하여 명령 명령을 실행한 다음 이 하위 프로세스에서 후속 명령을 실행합니다. 🎜🎜ssh 자동 로그인 스크립트에서는 generate ssh user_name@ip_str을 사용하고 하위 프로세스를 분기하여 ssh 로그인 명령을 실행합니다. 🎜🎜🎜expect 명령: 🎜🎜🎜expect 명령은 Expect 인터프리터의 핵심 명령입니다. 일반적인 사용법은 "문자열"입니다. 즉, 문자열 문자열에 *와 같은 와일드카드를 사용할 수 있습니다. 🎜🎜문자열이 명령줄에서 반환된 정보와 일치하면 Expect는 즉시 스크립트를 실행합니다. 🎜🎜set timeout 명령: 🎜🎜🎜set timeout n command 예상 명령의 대기 시간 제한을 n초로 설정합니다. 예상되는 명령이 n초 내에 획득되지 않으면 예상은 false이고 스크립트는 계속 실행됩니다. 🎜🎜send 명령: 🎜🎜🎜send 명령의 일반적인 사용법 "문자열"을 보내려면 일반적으로 명령을 입력할 때 명령줄에 메시지를 입력합니다. 물론 Enter를 나타내기 위해 문자열 뒤에 r을 추가하는 것을 잊지 마세요. ; 🎜🎜🎜상호작용 명령: 🎜🎜interact命令很简单,执行到此命令时,脚本fork的子进程会将操作权交给用户,允许用户与当前shell进行交互;
完成脚本
以下是一个完成版的脚本 test.sh:
#!/usr/bin/expect // 指定shebang set timeout 3 // 设定超时时间为3秒 spawn ssh user_name@172.***.***.*** // fork一个子进程执行ssh命令 expect "*password*" // 期待匹配到 'user_name@ip_string's password:' send "my_password\r" // 向命令行输入密码并回车 send "sudo -s\r" send "cd /data/logs\r" // 帮我切换到常用的工作目录 interact // 允许用户与命令行交互
执行 sudo chmod +x ./test.sh
命令给shell脚本添加执行权限;
运行 ./test.sh
命令,一键登陆成功!
简单的几个命令,,搭配起来解决了与命令行的交互问题后,很多复杂的功能也不在话下了~
alias别名
脚本完成了,可是还是有些小瑕疵:
输入./file_name.sh
命令太长。。。
只能在脚本目录中才能执行,不然使用绝对路径输出的命令更长。
这里我们想到了linux的alias命令:
alias命令:
alias命令使用方式为 alias alias_name="ori_command"
,将alias_name
设置为ori_command
的别名,这样我们输入执行alias_name
,就相当于执行了ori_command;
可是,我们会发现,当你关闭当前shell后,再打开一个shell窗口,再使用alias_name,系统提示command not found;
有没有能保持命令的方式呢?编辑bash_profile
文件。
bash_profile文件
我们编辑bash_profile文件,此文件会在终端窗口创建的时候首先执行一次,所以可以帮我们再设置一次别名;
执行命令vim ~./bash_profile,
在文件内部添加:
alias alias_name="/root_dir/../file_name.sh
保存后,再使用 . ~./bash_profile
或source ~./bash_profile
在当前脚本执行一遍设置别名命令,完成设置;
这样,我们无论在哪个目录,只要输入alias_name
命令,回车,真正的一键登陆!
위 내용은 SSH 자동 로그인을 구현하기 위한 쉘에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제










![Windows 11 전체 튜토리얼의 텔넷 [설치/활성화 및 문제 해결]](https://img.php.cn/upload/article/000/000/164/168476253791019.jpg?x-oss-process=image/resize,m_fill,h_207,w_330)
<p>텔넷은 "터미널 네트워크"의 약어입니다. 사용자가 한 컴퓨터를 로컬 컴퓨터에 연결하는 데 사용할 수 있는 프로토콜입니다. </p><p>여기서, 로컬 컴퓨터는 연결을 시작하는 장치를 의미하며, 로컬 컴퓨터에 연결된 컴퓨터를 원격 컴퓨터라고 합니다. </p><p>Telnet은 클라이언트/서버 주체에서 실행되며 오래되었지만 2022년에도 여전히 많은 사람들이 사용하고 있습니다. 많은 사람들이 이미 Microsoft에서 제공하는 최신 운영 체제인 Windows 11 운영 체제로 전환했습니다. &
![Explorer.exe가 시스템 시작 시 시작되지 않음 [수정]](https://img.php.cn/upload/article/000/887/227/168575230155539.png?x-oss-process=image/resize,m_fill,h_207,w_330)
요즘 많은 Windows 사용자는 심각한 Windows 시스템 문제에 직면하기 시작합니다. 문제는 시스템이 로드된 후 Explorer.exe를 시작할 수 없고 사용자가 파일이나 폴더를 열 수 없다는 것입니다. 그러나 Windows 사용자는 경우에 따라 명령 프롬프트를 사용하여 Windows 탐색기를 수동으로 열 수 있으며 시스템을 다시 시작할 때마다 또는 시스템 시작 후에 그렇게 해야 합니다. 이는 문제가 될 수 있으며 아래에 언급된 다음 요인으로 인해 발생합니다. 시스템 파일이 손상되었습니다. 빠른 시작 설정을 활성화합니다. 오래되었거나 문제가 있는 디스플레이 드라이버. 시스템의 일부 서비스가 변경되었습니다. 수정된 레지스트리 파일. 위의 모든 요소를 염두에 두고 사용자에게 확실히 도움이 될 몇 가지 요소를 생각해냈습니다.

Linux 시스템에서 파일을 처리할 때 파일 끝 부분의 줄을 삭제해야 하는 경우가 있습니다. 이 작업은 실제 응용 프로그램에서 매우 일반적이며 몇 가지 간단한 명령을 통해 수행할 수 있습니다. 이 기사에서는 Linux 시스템에서 파일 끝의 줄을 빠르게 삭제하는 단계를 소개하고 구체적인 코드 예제를 제공합니다. 1단계: 파일의 마지막 줄을 확인하세요. 삭제 작업을 수행하기 전에 먼저 파일의 마지막 줄이 무엇인지 확인해야 합니다. tail 명령을 사용하여 파일의 마지막 줄을 볼 수 있습니다. 특정 명령은 다음과 같습니다. tail-n1filena

클라우드 컴퓨팅과 사물 인터넷의 발달로 인해 서버의 원격 운영이 점점 더 중요해지고 있습니다. Python에서는 Paramiko 모듈을 사용하여 SSH 원격 작업을 쉽게 구현할 수 있습니다. 이 기사에서는 Paramiko의 기본 사용법과 Python에서 Paramiko를 사용하여 서버를 원격으로 관리하는 방법을 소개합니다. Paramiko는 무엇입니까? Paramiko는 SSH 클라이언트를 연결하고 제어하는 데 사용할 수 있는 SSHv1 및 SSHv2용 Python 모듈입니다.

RDP(원격 데스크톱 프로토콜)는 친숙한 그래픽 인터페이스를 제공하기 때문에 대부분의 Windows 사용자에게 항상 원격 관리를 위한 첫 번째 선택이었습니다. 그러나 보다 세부적인 제어가 필요한 시스템 관리자의 경우 SSH가 더 적합할 수 있습니다. SSH를 통해 관리자는 명령줄을 통해 원격 장치와 상호 작용할 수 있으므로 관리 작업이 더욱 효율적으로 이루어질 수 있습니다. SSH의 장점은 보안과 유연성으로, 특히 다수의 장치를 처리하거나 자동화된 작업을 수행할 때 관리자가 원격 관리 및 유지 관리 작업을 더 쉽게 수행할 수 있다는 것입니다. 따라서 RDP는 사용자 친화성 측면에서 뛰어나지만 시스템 관리자에게는 SSH가 성능과 제어 측면에서 우수합니다. 이전에는 Windows 사용자가 빌려야 했습니다.

배경: 원격 서버의 Mysql 데이터베이스에 접속해야 하는데, Mysql 데이터베이스의 보안 기간 동안 로컬 연결만 허용하도록 보안 조치가 설정되어 있습니다(즉, 서버에 로그인해야 사용 가능) ), 기타 원격 접속은 직접 접속이 불가능하며, 해당 포트도 수정되었기 때문에 ssh 기반으로 데이터베이스에 접속해야 합니다. 이런 방식으로 데이터베이스에 연결하는 것은 SSH 연결 기반의 Navicat 인터페이스와 동일합니다. Navicat은 데이터베이스 설치 지원 라이브러리에 연결합니다. Mysql에 연결하려면 먼저 pymysqlpipinstallpymysql을 설치하여 ssh 기반 라이브러리 sshtunnelpipinstallsshtunnel#을 설치해야 합니다.

쉘 스크립트는 쉘의 명령 해석 기능을 사용하여 일반 텍스트 파일을 구문 분석한 후 이러한 기능을 실행합니다. 쉘 스크립트는 명령 모음이라고 할 수도 있습니다.

1. SSH 상호 신뢰의 목적 1. SSH 상호 신뢰는 클러스터를 구축할 때 필요하며 이는 다른 노드에서 편리한 작업에 도움이 됩니다. 2. scp 원격 복사 작업을 사용할 때 대상 서버의 사용자 이름과 비밀번호를 입력해야 합니다. 이때 Linux 서버 간에 SSH 상호 신뢰를 구성하면 여러 서버 간 작업 시 비밀번호 없이 로그인할 수 있습니다. 리눅스 서버. 2. SSH 상호 신뢰 구성의 원칙은 간단히 말하면, 서버는 비밀번호를 입력하지 않고도 자동으로 인증이 완료될 수 있도록 대상 호스트의 인증서를 저장합니다. 3. SSH 상호 신뢰 구성 단계 1. 각 노드는 자체 공개 키와 개인 키 쌍을 생성합니다. 2. 공개 키 파일을 상대방에게 보냅니다. 3. 상호 신뢰 구성이 성공했는지 확인합니다. 4. 여기에서 MYDB01을 사용하여 SSH 상호 신뢰를 구성하고
