可以ping通,但是無法ssh連接
service iptables stop
service sshd start
sudo ufw status
sudo ufw disable
sudo ufw allow 22
ssh時permission denied, please try again
找到/etc/ssh/sshd_config 中的PermitRootLogin 后的值改為yes
在16中適用,在新版本中并沒用
我創了兩臺虛擬機,其中一臺是在較早的時候配置的,里面干了啥都忘記了,因為當時的主機名和用戶名都是一樣的,然后嘗試修改主機名和密碼,結果連上了,再創建新的虛擬機時再也沒有碰到過這個問題了,,,,
last -a 把從何處登入系統的主機名稱或ip地址,顯示在最后一行, -d 指定記錄檔案,指定記錄檔案,將IP地址轉換成主機名稱, -f <記錄檔案> 指定記錄檔案, -n <顯示列數>或-<顯示列數> 設定列出名單的顯示列數, -R 不顯示登入系統的主機名稱或IP地址, -x 顯示系統關機,重新開機,以及執行等級的改變等資訊 以下看所有的重啟、關機記錄 last | grep reboot last | grep shutdown history 列出所有的歷史記錄: history 只列出最近10條記錄: history 10 (注,history和10中間有空格) 使用命令記錄號碼執行命令,執行歷史清單中的第99條命令 !99 (!和99中間沒有空格) 重復執行上一個命令 !! 執行最后一次以rpm開頭的命令(!? ?代表的是字串,這個String可以隨便輸,Shell會從最后一條歷史命令向前搜索,最先匹配的一條命令將會得到執行,) !rpm 逐屏列出所有的歷史記錄: history | more 立即清空history當前所有歷史命令的記錄 history -c cat, tail 和 watch 系統所有的日志都在 /var/log 下面自己看(具體用途可以自己查,附錄列出一些常用的日志) cat /var/log/syslog 等 cat /var/log/*.log tail -f 如果日志在更新,如何實時查看 tail -f /var/log/messages 還可以使用 watch -d -n 1 cat /var/log/messages -d表示高亮不同的地方,-n表示多少秒重繪一次, 該指令,不會直接回傳命令列,而是實時列印日志檔案中新增加的內容, 這一特性,對于查看日志是非常有效的,如果想終止輸出,按 Ctrl+C 即可, 除此之外還有more, less ,dmesg|more... linux日志檔案說明 /var/log/message 系統啟動后的資訊和錯誤日志,是Red Hat Linux中最常用的日志之一 /var/log/secure 與安全相關的日志資訊 /var/log/maillog 與郵件相關的日志資訊 /var/log/cron 與定時任務相關的日志資訊 /var/log/spooler 與UUCP和news設備相關的日志資訊 /var/log/boot.log 守護行程啟動和停止相關的日志訊息 /var/log/wtmp 該日志檔案永久記錄每個用戶登錄、注銷及系統的啟動、停機的事件系統日志問題
將一個用戶設定為在遠程連接時只執行一段腳本,退出腳本后直接推出連接
在.bashrc最后一行加要執行的腳本檔案的絕對路徑 /home/xxx/xxx/xxx/xx.sh logout !!要在用戶目錄中的.bashrc !!該檔案不是readonly檔案,如果根目錄的bash.bashrc時為readonly檔案 !!這兩個都可實作此功能.區別是單個用戶和所有用戶
# 修改readonly檔案 :w !sudo tee %
# :q!
linux awk
session_tag=$1 has_process=`ps -ef|grep ssh|grep -v sshpass|grep "$session_tag"|awk '{ print $2 }'` 呼叫腳本時傳入一個引數用$1 在shell腳本中用此進行賦值 $2為第二列資料 在此為程式id
詳細的介紹自行百度,我用的不多就沒深入看過
strace
在開發堡壘機時用來進行行程的系統呼叫, 也就是在遠程端的所有操作,并輸出日志 strace -fp "has_process" -tt -o ./logs/ad/"today"/"session_tag".log 輸出檔案未處理 圖片在下方 has_process, session_tag 在上方有提及 today 為 today=`date "+%Y_%m_%d"` shell 中獲取格式化時間 引數在下方介紹 strace - trace system calls and signals usage: strace [-dffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file] [-p pid] ... [-s strsize] [-u username] [-E var=val] ... [command [arg ...]] or: strace -c [-e expr] ... [-O overhead] [-S sortby] [-E var=val] ... [command [arg ...]] 1, -c -- count time, calls, and errors for each syscall and report summary 為每個系統呼叫計算時間、呼叫、錯誤,并報告摘要 2, -f -- follow forks, -ff -- with output into separate files -f 跟蹤fork的行程;-ff 把輸出定向到獨立的檔案 3, -F -- attempt to follow vforks, -h -- print help message -F 嘗試跟蹤vfork的行程,當今平臺與-f功能相同;-h 列印幫助資訊 4, -i -- print instruction pointer at time of syscall 在系統呼叫時,列印指令指標 5, -q -- suppress messages about attaching, detaching, etc. 抑制附加、分離等資訊 6, -r -- print relative timestamp, -t -- absolute timestamp, -tt -- with usecs -r 列印相對時間戳;-t 絕對時間戳;-tt 微秒 7, -T -- print time spent in each syscall, -V -- print version -T 列印每個系統呼叫的時間花費;-V 列印版本 8, -v -- verbose mode: print unabbreviated argv, stat, termio[s], etc. args -v 詳細模式,列印非簡略的引數、狀態、termio[s]等 9, -x -- print non-ascii strings in hex, -xx -- print all strings in hex -x 列印非ascii的字串為16進制;-xx 列印所有的字串為16進制 10,-a column -- alignment COLUMN for printing syscall results (default 40) 對系統呼叫結果對齊列(默認為40列) 11,-e expr -- a qualifying expression: option=[!]all or option=[!]val1[,val2]... options: trace, abbrev, verbose, raw, signal, read, or write 在-e后附運算式,一個合格的運算式:選項=[!]所有 或者 選項=[!]值1[,值2]....;可選項:跟蹤、縮寫、冗長、原始的東東、信號、讀、寫, 12 -o file -- send trace output to FILE instead of stderr 發送跟蹤輸出到檔案,而不是stderr 13,-O overhead -- set overhead for tracing syscalls to OVERHEAD usecs 設定跟蹤系統呼叫的最大時間 14,-p pid -- trace process with process id PID, may be repeated 跟蹤值為ID的行程,可以重復多個哦(注:最多32個) 15,-s strsize -- limit length of print strings to STRSIZE chars (default 32) 限制列印字串的最大長度,默認為32位元組 16,-S sortby -- sort syscall counts by: time, calls, name, nothing (default time) 排序,以系統呼叫程序中的時間、或者呼叫名等作為排序項, 17,-u username -- run command as username handling setuid and/or setgid 以其他用戶名或者組名運行命令 18,-E var=val -- put var=val in the environment for command 設定環境變數 19,-E var -- remove var from the environment for command 清除環境變數 ======================================================== 1,查看CPU運行時間 [guest@localhost tmp]$ strace -c ./b.out % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 42.72 0.000692 87 8 open 38.40 0.000622 622 1 set_thread_area 16.85 0.000273 137 2 munmap 2.04 0.000033 5 7 read 0.00 0.000000 0 8 close 0.00 0.000000 0 1 execve 0.00 0.000000 0 1 access 0.00 0.000000 0 3 brk 0.00 0.000000 0 4 mprotect 0.00 0.000000 0 17 mmap2 0.00 0.000000 0 7 fstat64 ------ ----------- ----------- --------- --------- ---------------- 100.00 0.001620 59 total 2,查看相對運行時間 [guest@localhost tmp]$ strace -r ./b.out 0.000560 mprotect(0xb91000, 8192, PROT_READ) = 0 0.000196 mprotect(0x45c000, 4096, PROT_READ) = 0 0.000884 mprotect(0x42a000, 16384, PROT_READ) = 0 0.000191 mprotect(0xa4a000, 4096, PROT_READ) = 0 0.000144 munmap(0xb7f12000, 45307) = 0 0.000577 brk(0) = 0x8c2b000 0.000171 brk(0x8c4c000) = 0x8c4c000 0.000183 open("sleeper.cpp", O_RDONLY|O_LARGEFILE) = 3 0.000225 read(3, "#include <unistd.h>\n#include <io"..., 8191) = 355 0.000372 read(3, "", 8191) = 0 0.000298 close(3) = 0 0.000192 exit_group(0) = ? 3,查看檔案變動相關的信號 [guest@localhost tmp]$ strace -e trace=desc ./b.out open("/etc/ld.so.preload", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0444, st_size=17, ...}) = 0 close(3) = 0 open("/lib/libcwait.so", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\3\0\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=2572, ...}) = 0 close(3) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=45307, ...}) = 0 close(3) = 0 open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0P\2348\0004\0\0\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0755, st_size=936908, ...}) = 0 close(3) = 0 open("/lib/libm.so.6", O_RDONLY) = 3 4,strace -o output.txt -T -tt -e trace=all -p 28979 上面的含義是 跟蹤28979行程的所有系統呼叫(-e trace=all),并統計系統呼叫的花費時間,以及開始時間(并以可視化的時分秒格式顯示),最后將記錄結果存在output.txt檔案里面 5,查看行程是否卡住 strace -p 36699 Process 36699 attached - interruptto quit futex(0x22d8400, FUTEX_WAIT_PRIVATE, 0, NULL # 到這里沒有任何輸出 一直掛起 6,尋找被程式讀取的組態檔 stracephp 2>&1 | grepphp.ini open("/usr/bin/php.ini", O_RDONLY) = -1 ENOENT (Nosuchfileor directory) open("/etc/php.ini", O_RDONLY) = 3 lstat("/etc/php.ini", {st_mode=S_IFREG|0644, st_size=69345, ...}) = 0 7,跟蹤指定的系統呼叫 strace命令的-e選項僅僅被用來展示特定的系統呼叫(例如,open,write等等) 讓我們跟蹤一下cat命令的 open 系統呼叫, stracecat /tmp/trace.2043925204.012003.xt | head execve("/bin/cat", ["cat", "/tmp/trace.2043925204.012003.xt"], [/* 35 vars */]) = 0 brk(0) = 0x167f000 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb7d8991000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (Nosuchfileor directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat(3, {st_mode=S_IFREG|0644, st_size=74047, ...}) = 0 mmap(NULL, 74047, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fb7d897e000 close(3) = 0 open("/lib64/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\356\1\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=1920936, ...}) = 0 mmap(NULL, 3750152, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fb7d83df000 mprotect(0x7fb7d8569000, 2097152, PROT_NONE) = 0 mmap(0x7fb7d8769000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x7fb7d8769000 ... 8, 統計概要 它包括系統呼叫的概要,執行時間,錯誤等等,使用-c選項能夠以一種整潔的方式展示: strace -c ls environments generate githooks hieradata manifests master modules README.md % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 0.00 0.000000 0 10 read 0.00 0.000000 0 1 write 0.00 0.000000 0 12 open 0.00 0.000000 0 14 close 0.00 0.000000 0 12 fstat 0.00 0.000000 0 28 mmapView Code


在sudo apt 時出現E: 無法獲取 dpkg 前端鎖 (/var/lib/dpkg/lock-frontend)或其他行程占用
ps -e|grep apt sudokill 相關行程 sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo apt update
普通用戶sudo不要密碼
sudo vim /etc/sudoers
版本問題
pkexec visudo 進行編輯
按提示保存 xxx ALL=(ALL) NOPASSWD:ALL 設定組 %xxx ALL.....同上
-1:強制使用ssh協議版本1; -2:強制使用ssh協議版本2; -4:強制使用IPv4地址; -6:強制使用IPv6地址; -A:開啟認證代理連接轉發功能; -a:關閉認證代理連接轉發功能; -b:使用本機指定地址作為對應連接的源ip地址; -C:請求壓縮所有資料; -F:指定ssh指令的組態檔; -f:后臺執行ssh指令; -g:允許遠程主機連接主機的轉發埠; -i:指定身份檔案; -l:指定連接遠程服務器登錄用戶名; -N:不執行遠程指令; -o:指定配置選項; -p:指定遠程服務器上的埠; -q:靜默模式; -X:開啟X11轉發功能; -x:關閉X11轉發功能; -y:開啟信任X11轉發功能, -D SSH 會建立一個 socket 監聽 ,把資料轉發到目標機器上. -L 命令中的L引數一共接受三個值,分別是"本地埠:目標主機:目標主機埠",它們之間用冒號分隔,這條命令的意思,就是指定SSH系結本地埠2121,然后指定host3將所有的資料,轉發到目標主機host2的21埠(假定host2運行FTP,默認埠為21) -p 表示指定登錄埠 -N 表示只連接遠程主機,不打開遠程shell -T 表示不為這個連接分配TTY 和上面的 N 引數 一起使用,代表這個SSH連接只用來傳資料,不執行遠程操作, -f 表示SSH連接成功后,轉入后臺運行,如果想關閉,只能通過 kill 命令去殺掉行程.ssh引數
ssh登錄遠程服務器時無密碼登錄,因為要使用sshpass設定免密,需要定制上面提到的審計系統,所以要修改sshpass原始碼,不能修改系統中原有的sshpass,所以需要下載新的sshpass原始碼
百度sshpass下載 tar解壓 解壓引數在Linux中有介紹 sudo apt install zlib1g sudo apt install zlib1g-dev sudo apt install libssl ./configure [--prefix=路徑] make make install
如果permission denied 去掉prefix
sudo make install
參考:https://askubuntu.com/questions/424786/permission-denied-while-running-make-install
sshpass跳過密碼登錄并添加日志功能
sshpass -p [密碼] [修改后的sshpass原始碼路徑abs path 【/home/jcr/Desktop/openssh8/bin/ssh】] 用戶名@IP -o StrictHostKeyChecking=no -Z 傳入的引數
-Z 為原始碼中添加的引數
使用subprocess模塊
smartmontools 相關
參考:https://linux.cn/article-4461-2.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/131376.html
標籤:Linux
上一篇:解決虛擬機網路重啟后連不上的問題
