約束の地

キャロ組

OS -> Linux

Squid で SSL Bump なプロキシサーバを構築する

結論 細かく書いている時間がないので、手順だけとさせてください*1。SSL Bump は MITM(中間者攻撃)とほぼ同等なロジックのため、(不)特定多数のユーザが使う場合には注意が必要です。 前提 CentOS 7 です。 手順 CentOS 7 の場合は Squid のライブラリ…

Docker のコンテナに root で入る方法

結論 $ docker exec -it -u 0 CONATAINER_NAME /bin/bash つまり -u オプションに 0 を指定すれば OK です。ユーザID を 0 としてログインすることになります。ユーザID 0 は、root ユーザです(以下の例を参照)。 $ cat /etc/passwd root:x:0:0:root:/root…

Apache2 でどこにも DocumentRoot が見当たらないときは /var/www/html を見に行く(っぽい)

結論 つまり、いろいろと設定を変更しても /var/www/html 配下のファイルが表示され続けるときは、どこかの設定がおかしいということになります。 経緯 /etc/apache2/sites-available 配下に設定ファイルの foobar.conf を頑張って書いて、Apache2 を再起動…

Docker Compose で作られたデータボリュームには現在のディレクトリ名が接頭語として付与される

具体例 こんな感じで docker-compose.yml 内で volumes を定義したとします。カレントディレクトリは /path/to/fruits であるとします。 volumes: apple: orange: banana: そして $ docker-compose up してから $ docker volume list すると以下のようになり…

ssh_exchange_identification: Connection closed by remote host と出て SSH 接続ができないとき

一つの理由 sshd が起動していない 背景 Docker のイメージを作っていて遭遇しました*1。 *1:Docker イメージでは SSH を受け付けるべきではない、という定石はとりあえず置いとくとして

CentOS 上の nginx で リバースプロキシ によるアクセスが Permission denied になるとき

結論 SELinux。したがって以下のようにして許可をすればいい。 $ sudo setsebool httpd_can_network_connect on -P

CentOS 7 で rbenv install しようとしたら no acceptable C compiler found in $PATH と出た場合

結論 gcc を入れます。 $ sudo yum install -y gcc 補足 rbenv/ruby-build の Wiki には以下のように書いてあります。が、これだけだと標題のエラーが出てしまいました。 CentOS/Fedora: # (`dnf install` on Fedora 22+) yum install -y gcc-6 bzip2 openss…

Ubuntu 18.04 で apt-get したときの対話画面をスキップする

結論 apt-get dist-upgrade の場合です $ DEBIAN_FRONTEND=noninteractive sudo -E apt-get dist-upgrade -y 状況 grub-pc などで以下のような画面が出て対話が必要なときがあります。これを避けたい場合です。 根拠 $ man sudo (前略) -E, --preserve-env…

Squid で Basic認証 が有効にならなくて 5分 くらいハマった

結論 http_access allow は deny よりも上に書く。

squid.conf の文法チェックをする方法

結論 $ sudo squid3 -k check

Ubuntu における Squid の認証に用いる basic_ncsa_auth の場所

結論 /usr/lib/squid3/basic_ncsa_auth*1 補足 以下のコマンドで調べれば済むと思います。 $ find / -name *ncsa_auth* *1:Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-1031-aws x86_64) です

WSL では Windows のエクスプローラからファイルやディレクトリを新規作成してはいけない

理由 パーミッションが問答無用で 777 になるから。 解決策 2018/01/05現在、ない*1。 参考 WSL File System Support – Windows Subsystem for Linux 補足 上記のように WSL 上で開発するのは危険なので、基本は SSH を使って 開発して、Rubocop のようなロ…

WSL + Visual Studio Code の環境で Rubocop (ruby-rubocop) を使う方法

結論 こちらをご覧ください。

WSL の Ubuntu で Windows のドライブをマウントした際にそれらの中身に chmod が効かない場合

結論 マウントする際に metadata オプションを付与する。 答えそのもの 遠因 補足 これでようやく WSL*1 での Ubuntu 運用が「使い物にならない」レベルからは脱却できたかと思います。 が、実際には WSL ならば Vagrant や Docker の方がよいかもしれません…

SSH 接続をしようとして Too many authentication failures と出た場合の解決策の一つ

前提 以下のような状況で Too many authentication failures が出たとします。 ~/.ssh/config にめちゃくちゃ多くの接続情報を書いている 結論 接続先の /etc/ssh/sshd_config を編集する。具体的には MaxAuthTries の数をある程度大きくし、再試行が許され…

Monit の exec アクションで複数のコマンドを実行する方法

結論 シェルスクリプトなどを作ってそれを実行する。 だめな例 exec "/usr/bin/touch /tmp/foobar && /usr/bin/curl -I 'https://www.google.co.jp'" exec "/usr/bin/touch /tmp/foobar & /usr/bin/curl -I 'https://www.google.co.jp'" exec "/usr/bin/touc…

SSH Agent Forwarding を用いる際に微妙にハマったところ

SSH Agent Forwarding SSH Agent Forwarding とは、多段で SSH 接続をする場合に秘密鍵を中継場所に置かないようにする手法です。それを実現するために ssh-agent という機能を用います。ssh-agent は SSH Agent Forwarding とは直接関係はない技術です。 ss…

Raspberry Pi(ARM) 上の Docker で MySQL を使う

結論 hypriot/rpi-mysql を用いる*1。 hypriot/rpi-mysql 公式イメージが現時点(2018/10/26)では存在しないので……。 補足 MariaDB の場合も同様に パブリックイメージ を用います。 *1:パブリックイメージ

Open Media Vault の Remote Mount を使った際にファイルの書き込みができない場合

結論 共有オプションで uid=12345 などと uid を指定する。なお uid には数値だけではなく文字列(ユーザ名)を指定することもできます。結果として「オプション」の部分の値は _netdev,iocharset=utf8,vers=2.0,nofail,uid=12345 のようになるかと思います…

Linux で削除してしまったファイルやディレクトリを復元する

結論 extundelete を用います。2018/10/23 現在では 0.2.4 が最新版です。 インストール方法 コンパイルする 自前でコンパイルする必要があります。ソースをダウンロードしてからコンパイルします。下記では書き出し先に/tmp/extundelete を指定しています。…

Raspberry Pi で OpenMediaVault に SSH で初期ログインする

結論 1. GUI の SSH の設定画面で ルートログイン を一時的に有効にする 2. 以下の ユーザ名 と パスワード で SSH でログインする USERNAME root*1 PASSWORD openmediavault 3. ログインできたはず あとは各自頑張って下さい。 補足 root 以外のユーザでロ…

Raspberry Pi で OpenMediaVault を使う

結論 イメージファイル を落として MicroSD に書き込む Raspberry Pi を起動する Raspberry Pi のアドレスに Webブラウザ でアクセスする ログイン画面が出たら以下の ID と パスワード でログインする ID: admin PASSWORD: openmediavault 補足 初回起動時…

Raspberry Pi を初期設定するときに画面を見ないで設定を済ませる(SSH できるようにする)

前提 Raspbian Stretch Lite を使います 有線LAN 接続です USBキーボード を使います

Ubuntu 16.04 LTS, 18.04 LTS で再起動後にサービスを自動起動する方法

結論 $ sudo systemctl enable [サービス名] 実例 $ sudo systemctl enable ssh 補足 サービスの自動起動を止めるには disable を用います。 $ sudo systemctl disable ssh

Mac に mitamae (MItamae) をインストールする

特別に行うことはないです。 1. releases から Mac 用のバイナリをダウンロード 今の Mac なら mitamae-x86_64-darwin ですね。 2. リネームする mitamae-x86_64-darwin のままでも動かないということはないですが、mitamae という名前に変えておきます。 $ …

SSHトンネリング(ポートフォワード)で接続が切れてしまう場合の対策

結論 サーバ側の設定 /etc/ssh/sshd_configの 112行目 くらい*1にある ClientAliveInterval 0 を有効*2にする必要がある その ClientAliveInterval の値として*3適切な値を与える(まずは 60 くらいでしょうか) SSHサーバを再起動する クライアント側の設定…

Raspberry Pi (Raspberry Pi 3 Model B) では ARM 32bit のバイナリを使う(peco の例)

結論 標題のとおりですが、例えば peco をインストールする場合には、Releases のページから peco_linux_arm.tar.gz をダウンロードしてインストールします。 それ以外のバイナリでは実行時に 実行形式エラー と怒られて実行できません。 補足 uname -m を実…

Raspberry Pi で CLI でサクッとサーバを立てて SSH するまで持っていく

結論 1. OS のイメージを落とす Raspbian の Stretch Lite の方を落とします。 2. OS のイメージを MicroSD に書き込む 公式ドキュメントで説明されているとおり、Etcher というイメージ書き込みソフトを用います。 3. HDMI でモニタにつなぎ キーボード を…

Ubuntu で名前解決ができないとき

症例 外からは入ってこられる*1けど外に出ていけない。 結論 /etc/resolv.conf が適切でない ただし、Ubuntu ではこれを直接編集しないで /etc/network/interfaces を編集する*2 *1:SSH で入れる *2:再起動時に /etc/resolv.conf 自体はリセットされるため

SSH で トンネル するときに注意すること

背景 自分がドハマりしてしまったので同じようなことをしてほしくないから*1。 注意すること 登場するメンバーは 3人 いるということ 接続元 踏み台 接続先 上記のうち、踏み台については単に経由するだけなので、そこのポート番号を考える必要はない ただし…

Powered by はてなブログ