よく使っているコマンドの備忘録です。ずっと覚えていられる頭が欲しい。
SSHログイン関係
SSHを使ってサーバにログインするには
サーバ:abc.cc.jp ポート:1233
ユーザ名:ssh_user パスワード:246810
PwerShell
> ssh ssh_user@abc.cc.jp -p 1233 (port省略すると22)
password:******
$ > shellが開始される
鍵ペア(identity_file)を使ってログインする
あらかじめrsa鍵ペアを作成し、公開鍵(*.pubファイル)をサーバのホームディレクトリ上の
~/.ssh
に保存しておく。
秘密鍵をクライアントのカレントディレクトリに置いて、このフォルダからpowershellを起動
> ssh ssh_user@abc.cc.jp -i 鍵ファイル名
検索系
findコマンド
>find 検索場所 -オプション(条件)
検索場所から、検索条件に一致するものを一覧表示する
検索場所を省略するとカレントディレクトリを対象とする
例
find . -name *.css *.css を検索する
find . -atime 0 今日アクセスしたファイル/フォルダを表示(-1だと昨日)
find . -atime +3 3日以前にアクセスされたファイル/フォルダを全て表示
find . -amin 1 1分前にアクセスしたファイル/フォルダを表示
find . -amin -10 10分以内にアクセスしたファイル/フォルダを表示
find . -mtime 0 今日更新したファイル/フォルダを表示
find . -mtine +7 今週更新したファイル/フォルダを全て表示
find . -size 10c ファイルサイズが10バイトのファイルを検索
find . -size -10c ファイルサイズが10バイト以下のファイルを検索
find ./n*/re* -type f ./n*/re* に該当するファイルのみを検索
find ./n*/re* -type d ./n*/re* に該当するフォルダのみを検索
find . -perm 755 パーミッションが755のファイル/フォルダを検索(*使えない)
find . -perm -u=x 現在のユーザにx(実行権限)があるものを検索
find . -user auser 所有者がauserのファイル/フォルダを表示
find . -group bgroup グループがbgroupのファイル/フォルダを表示
find . -name *.txt -and -atime 0 複合条件(AND)
find . -name *.txt -or -atime 0 複合条件(OR)
find . -not -name *.txt 条件に当てはまらないものを検索
find ./home/ -perm 664 -exec chmod 666 {} \; 条件結果のパーミッションを全て変更
調査系
fileコマンド
file ファイル
ファイルの種類を調べて出力する
>file data
data: ASCII text # テキストファイル
data: bzip2 compressed data, block size = Xk # bzipファイル
data: gzip compressed data, ... # gzip ファイル
data: POSIX tar archive (GNU) # tar ファイル
ファイル内からの抽出
awkコマンド
> awk 拡張正規表現 ファイル名
ファイル内から、拡張正規表現に一致する行を取り出して表示する
例
awk '/machi/' in.txt in.txt内を検索し、machiを含む行の一覧を表示する
awk '/m*i/' in.txt in.txt内を検索し、m*iを含む行の一覧を表示する
awk '/\/data/' in.txt in.txt内を検索し、/dataを含む行の一覧を表示する
文字列操作系(暗号化含む) シーザー暗号、ROT13
trコマンド
> tr '変換元文字列' '変換先文字列'
変換元文字列を変換先文字列に変換します
単体で使われることはなく、catやecho等の標準出力に対して処理を実行します
echo '私の名前はABCです。' | tr 'ABC' '123'
A->1,B->2,C->3 にそれぞれ置き換わります
この仕組みを利用してシーザー暗号に使われます
■シーザー暗号 エンコード
echo 'tansunohazama' | tr 'abcdefghijklmnopqrstuvwxyz' '357421689qwertyuioplkjhgfd'
l3tpkty83d3r3
■シーザー暗号 デコード
echo 'l3tpkty83d3r3' | tr '357421689qwertyuioplkjhgfd' 'abcdefghijklmnopqrstuvwxyz'
tansunohazama
ROT13暗号にも使われます
■ROT13エンコード
echo 'tansunohazama' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
gnafhabunmnzn
■ROT13デコード
echo 'gnafhabunmnzn' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
tansunohazama
xxdコマンド
xxd オプション ファイル名
テキストファイル ←→ ダンプファイル の相互変換を行うコマンド
例
>echo "abcdefghijklmnopqrstuvwxyz" > test.txt
>cat test.txt
abcdefghijklmnopqrstuvwxyz
>xxd test.txt > test.dmp #ダンプ結果をテキストファイルをして保存する
cat test.dmp
00000000: 6162 6364 6566 6768 696a 6b6c 6d6e 6f70 abcdefghijklmnop
00000010: 7172 7374 7576 7778 797a 0a qrstuvwxyz.
>xxd -r test.dmp # ダンプをリバースして表示するだけ
abcdefghijklmnopqrstuvwxyz
>xxd -r test.dmp > rev.txt # ダンプリバースをtxtにファイルに保存
>cat rev.txt
abcdefghijklmnopqrstuvwxyz
ファイルの圧縮解凍
gzip (gzipの圧縮解凍 *.gz)
>gzip -オプション ファイル名
例
>file data
data: gzip compressed data
> mv data data.gz
> gzip -d data.gz
gzip test.txt ファイルを圧縮します
gzip -d test.gz ファイルを展開(解凍)します
gunzip test.gz でも解凍できる
※拡張子が.gzになっていないと実行できないので、解凍できない時は拡張子(gz)を付ける
bzip2 (bzipファイルの圧縮解凍 *.bz2)
>bzip2 -オプション ファイル名
例
>file data
data: bzip2 compressed data
> mv data data.bz2
> bzip -d data.bz2
bzip2 test.txt ファイルを圧縮します
bzip2 -d test.bz2 ファイルを展開(解凍)します
※拡張子が.bz2になっていないと実行できないので、解凍できない時は拡張子(bz2)を付ける
tar(tar ファイルの圧縮解凍 * .tar)
> tar -オプション ファイル名
tar -cvf test.tar path # path ファイルをtest.tarに圧縮します
tar -xvf test.tar # test.tar を解凍します
OSバージョンの確認
簡易確認(バージョンだけ知りたい)
> cat /etc/issue
Ubuntu 24.04 LTS \n \l
詳細確認(コードネームも知りたい)
> lsb_release -a
No LSB modules are avaliable.
Distributor ID: Ubuntu
Description: Ubuntu 24.04 LTS
Release: 24.04
Codename: noble
通信系
ポートの使用確認
> ss -ano | grep :22
# 22番ポート使ってる?
ncコマンド(通信の疎通確認)
nc サーバ名 ポート
サーバのポートに接続し、メッセージの送受信を行えます
# サーバ
> nc -l 12345 # 12345番ポートで待ち受け開始
# クライアント
> nc aaa.bb.cc 12345 # サーバに接続
message を入力すると サーバに送信することができます
OpenSSLコマンド
openssl s_client -connect サーバ:ポート -ign_eof (ポートを省略すると443)
SSL通信を使ってネット疎通を行いたい場合
> openssl s_client -connect サーバ:12345 -ign_eof
CONNECTED(00000003)
:
SSLハンドシェイクの結果が出力されます(結構膨大)
read R BLOCK
nmapコマンド
nmap サーバ
ポートの疎通確認
>nmap -p 1-1000 localhost # ポート番号が1~1000だけを検索する
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-21 16:47 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
Not shown: 996 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
631/tcp open ipp
ssコマンド
ss -オプション
nmap の高速版
-l # リッスンポートを表示
-t # tcp 接続のみを表示
-u # udp接続のみを表示
-n # アドレスからサーバ名の解決を行わない
> ss -ltn # tcpで待ち受けているポートを全て表示
通信アダプタの表示
$ > ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:72:7d:77 brd ff:ff:ff:ff:ff:ff
altname enp2s1
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 02:42:6c:fd:4e:0d brd ff:ff:ff:ff:ff:ff
# アダプタは3個( lo,ens33,docker0 )
# lo は、state UNKNOWN(見つからない)
# ems33 は、state UP(有効)
# docker0 は、state DOWN(停止)
ネットワーク情報のダンプ
$ > sudo tcpdump -i ens33 -A -s 0 'tcp port 80'
#ens33 を通る通信(80番)をダンプ表示して
APTによるパッケージ管理
apt コマンドでパッケージ化されたアプリのインストール、アップデート、削除が行えます。
apt は更新しないと最新のパッケージを取得できないので、毎回更新してから使用してください。
apt は、apt-getの後継機版の位置づけですので、基本的にはaptを使えばいいとおもいます。
apt 対話型で見やすくコマンド操作しやすい
apt-get 余分な対話はなく、スクリプト向き
aptの更新(おまじないだと思って必ず更新してから使うこと)
> sudo apt update (寿司屋例「へいらっしゃい」)
aptによるパッケージ検索
# apt でインストールできるパッケージの一覧(寿司屋例「今日のネタ全部出して」)
> apt list
パッケージ名/パッケージ+バージョン
:
# パッケージ名による検索
> apt search apache (寿司屋例「今日は新鮮な"apache"入ってる?」)
パッケージ名/パッケージ+バージョン
説明
:
※説明に"apache"という文字列が入っているものも全て表示
> apt list | grep apache (上と同じですが、searchコマンド用意したんだから使わんかいって叱られます)
aptによるインストール
# パッケージ名を指定してインストール
> sudo apt install apache2 (寿司屋例「じゃあapache2もらおうかな」)
aptによるアップデート
# アップデートされたパッケージの一覧
> apt list --upgradable (寿司屋例「今日のおすすめは?」)
# パッケージ名を指定してインストール
> sudo apt install apache2 (寿司屋例「じゃあapache2もらおうかな」)
# アップデートを全てインストール
> sudo apt upgrade (寿司屋例「じゃあ全部もらおうかな」)
※ update と upgrade は似ているので打ち間違えないこと!(たまに間違えますw)
# 特定のパッケージのみアップデート
> sudo apt --only-upgrade install apache2 (このapache2だけ握りなおしてもらえるかな)
aptによるアンインストール
# システムから削除(設定ファイルは残す)
sudo apt remove apache2
# システムから削除(設定ファイルも削除)
sudo apt purge apache2
ファイル操作関係
カレントディレクトリを表示(私は今どこにいるの!?)
> pwd
/home/???/デスクトップ
基礎
# フォルダ作成
> mkdir newdir
# ディレクトリ移動
> cd newdir
# カレントフォルダ表示
> pwd
/home/????/デスクトップ/newdir
# ディレクトリ移動
> cd ..
# 簡易表示
> ls
newdir
# 詳細表示
> ll
drwxr-xr-x 3 ??? ???? 4096 7月 7 13:43 newdir
# ファイルを削除する
> rm newdir
# フォルダを削除する
> rm -r newfolder
空のファイルを作る
> touch newfile
パーミッションの設定を行う
# newfileに(管理者:rw,グループ:r,その他:r)読み書き実行権限を付与する
> chmod 644 newfile
所有者(+root) | r(読込) w(書込) x(実行) | 4+2+1 |
グループメンバ | r w x | 4+2+1 |
その他のメンバ | r w x | 4+2+1 |
tarによる圧縮解凍
linux でよく使われる圧縮解凍ソフトです
gzip、bzip2、xzに対応しています。
インストール方法
> sudo apt install tar
tar による圧縮
-a auto 拡張子で圧縮方法を自動選別
-c create 圧縮ファイルを作成する
-v 詳細モード 圧縮中にファイル名が次々と表示されるようになる
-f ファイル名 ファイル名の宣言であり必須
> tar -acvf 圧縮ファイル名 圧縮フォルダ名
# testフォルダをtest.tar.gz に圧縮する
> tar -acvf test.tar.gz test
tarによる解凍
-x 解凍モード
-v 詳細モード 圧縮中にファイル名が次々と表示されるようになる
-j bzip2形式に使用
-z gzip形式に使用
-j xz形式に使用
-f ファイル名 ファイル名の宣言であり必須
> tar -xvjf test.tar.gz
# カレントディレクトリにファイルが解凍される(圧縮ファイルは消えない)
ダウンロード関係(wget)
URLを指定してファイルをカレントディレクトリにダウンロードします
#カレントフォルダにファイルをダウンロードします
> wget URL
ダウンロード後、ファイルの解凍を行うことが多い
# apache 2.4.61 のソースをダウンロード
> wget https://dlcdn.apache.org/httpd/httpd-2.4.61.tar.bz2
# 解凍
> tar -xvjf httpd-2.4.61.tar.bz2
# フォルダに移動
> cd httpd-2.4.61
# 設定
> ./configure (調査確認中 document_root,server_root の設定がうまくいかず)
# コンパイルとインストール
> make
> sudo make install
ネットワーク関係
ローカルIPの確認 hostname -I
ポートの状態確認 (TCP)ss -ant (UDP) ss -anu
バージョン管理
コアカーネルのバージョン確認 cat /etc/issue
バージョンアップ sudo apt update
Apache関係
パッケージ名 apache2
設定ファイル /etc/apache2/apache2.conf
アクセスログ /var/log/apache2/access.log
エラーログ /var/log/apache2/error.log
# 起動再起動関係
> sudo systemctl restart apache2
> sudo systemctl start apache2
> sudo systemctl stop apache2
# errorログの表示
> tail -f /var/log/apache2/error.log
# バージョン確認
> apache2 -v
# 自動起動の有効化
> sudo systemctl enable apache2
# ステータス確認
> sudo systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/apache2.service; enabled; preset: enabled)
# 自動起動:enabled 自動起動しない:disabled
Active: active (running) since Wed 2024-07-17 12:11:31 JST; 58s ago
# active:実行中 inactive:停止中
php関係
バージョン確認 php -v
composer バージョン確認 composer -v
composerプロジェクトの生成 composer init
時刻関係
# 時刻設定の表示(system date を表示する)
> timedatectl status
Local time: 日 2024-07-07 14:52:51 JST
Universal time: 日 2024-07-07 05:52:51 UTC
RTC time: 日 2024-07-07 05:52:51
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes # yes になっていればそのうち同期されます
NTP service: active # active になっていればそのうち同期されます
RTC in local TZ: no
# 即時同期
> sudo systemctl restart systemd-timesyncd
OpenSSH関係
パッケージ名 openssh-server
設定ファイル /etc/ssh/sshd_config
# 起動再起動
> sudo systemctl start ssh # 起動
> sudo systemctl restart ssh # 再起動
# バージョン
> ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.4, OpneSSL 3.0.13 30 Jan 2024
# ステータス
>ssh systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; enabled; preset: enab>
# 自動起動:enabled 自動起動しない:disabled
Active: active (running) since Wed 2024-07-17 09:51:55 JST; 1min 44s ago
# active:実行中 inactive:停止中
# 自動起動の有効化
> sudo systemctl enable ssh
#ログの確認
> sudo journalctl -u ssh
7月 17 10:01:07 ubaxis-virtual-machine sshd[5003]: Received signal 15; terminating.
7月 17 10:01:07 ubaxis-virtual-machine systemd[1]: ssh.service: Deactivated successfully.
7月 17 10:02:10 ubaxis-virtual-machine systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
7月 17 10:02:10 ubaxis-virtual-machine sshd[5155]: Server listening on :: port 22.
7月 17 10:02:10 ubaxis-virtual-machine systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
windowsからのログイン関係
VM上のubuntuにssh接続する | タンス (tansunohazama.sakura.ne.jp)